在返回语句中包含多个变量[重复]

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 Ra​​haman :) 这是一个不错的方法,看起来比我当前的代码更整洁。我刚试了一下,效果很好,感谢您抽出宝贵时间回答:) 这是我的荣幸。祝你有美好的一天 。快乐编码:)【参考方案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 相关的解决方案。

以上是关于在返回语句中包含多个变量[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在一个窗口中包含多个图表[重复]

如何在一个窗口中包含多个图表[重复]

如何在正则表达式中包含变量[重复]

删除r中包含某些字符串的变量[重复]

在 C 字符串中包含双引号 (") [重复]

如何映射 URL 中包含斜杠(通配符映射)[重复]