在返回语句中包含多个变量[重复]
Posted
技术标签:
【中文标题】在返回语句中包含多个变量[重复]【英文标题】:Including multiple variables in return statement [duplicate] 【发布时间】:2022-01-05 14:37:33 【问题描述】:我有一个顶部带有过滤功能的概览站点。用户可以过滤位置和部门。
控制器的代码如下所示:
public function index(Request $request)
$posts = Post::orderBy('titel')
->get();
$standorts = Standort::get();
$abteilungs = Abteilung::get();
if ($request->filled('s'))
$query = strtolower($request->get('s'));
$posts = $posts->filter(function ($post) use ($query)
if (Str::contains(strtolower($post->Titel), $query))
return true;
return false;
);
return view('posts.overview', ['posts' => $posts], ['standorts' => $standorts]);
我还需要提供$abteilungs = Abteilung::get();
,但是当我这样返回时:
return view('posts.overview', ['posts' => $posts], ['standorts' => $standorts], ['abteilungs' => $abteilungs]);
括号中的最后一部分是灰色的,我无法访问它。
有没有办法使这项工作或返回视图仅限于两个参数?
【问题讨论】:
除此之外,您应该根据请求值进行条件查询,而不是从数据库中提取 everything 然后进行过滤。例如。$posts = Post::orderBy('titel')->when($request->filled('s'), fn ($q) => $q->where('titel', 'like', '%'.$request->s.'%'))->get();
when()
方法仅在第一个参数为真时执行第二个参数中的回调。 laravel.com/docs/8.x/queries#conditional-clauses
【参考方案1】:
要将多个变量传递给您的视图,您应该这样做
return view('posts.overview', ['posts' => $posts, 'standorts' => $standorts, 'abteilungs' => $abteilungs]);
【讨论】:
天哪,这有多明显?非常感谢!我什至没有考虑过这种方式,因为我提供了第二个变量,如顶部所示,带有自己的括号。欣赏它!我会尽快接受你的回答。祝你有美好的一天!【参考方案2】:你也可以这样试试
$data = [
'posts' => $posts,
'standorts' => $standorts,
'abteilungs' => $abteilungs,
];
return view('posts.overview')->with($data);
或者,
return view('post.overview',compact('posts','standorts','abteilungs'));
【讨论】:
嘿@Md Sohanur Rahaman :) 这是一个不错的方法,看起来比我当前的代码更整洁。我刚试了一下,效果很好,感谢您抽出宝贵时间回答:) 这是我的荣幸。祝你有美好的一天 。快乐编码:)【参考方案3】:在view方法中,第二个参数是传递数据给view,你可以传递任意数量的变量 如下:
return view('post.review',['variableOne' => $variableOne,'variableTwo' => `$variableTwo,'variableThree' => $variableThree])`
【讨论】:
【参考方案4】:您可以通过多种方式将变量传递给视图..
方式 1:
$variables = [
'variable1'=>'something goes here',
'variable2'=>'something goes here',
];
return view('view-file')->with($variables );
方式 2:
return view('view-file')->with(['variable1'=>'something goes here','variable2'=>'something goes here']);
方式 3:
$variable1 = 'something goes here';
$variable2 = 'something goes here';
return view('view-file')->withVariabl1($variable1);
or
return view('view-file')->withVariabl2($variable2);
or
return view('view-file')
->withVariable2($variable2)
->withVariable1($variable1);
方式 4
$variable1 = 'something goes here';
$variable2 = 'something goes here';
return view('view-file',compact('variable1','variable2'));
希望您清楚如何以多种方式发送变量以进行查看。如果您想传递 1 或 2 个变量,并且以后不需要增加变量,则建议使用 way 4。 但从我的观点和现实生活经验来看,我始终建议使用 way 1
【讨论】:
嘿,谢谢你的详细回答!! :) 欣赏它,很好地了解可能的情况,因为我是 php 和 laravel 的新手,这非常有帮助。感谢您的宝贵时间,也祝您有美好的一天:) 你可以在 github 上关注我并随时敲我以获得与 php 相关的解决方案。以上是关于在返回语句中包含多个变量[重复]的主要内容,如果未能解决你的问题,请参考以下文章