【问题标题】:Setting a value for global variable in view that can be used in Controller Laravel 5.5为可在 Controller Laravel 5.5 中使用的视图中的全局变量设置值
【发布时间】:2018-09-13 19:02:07
【问题描述】:

我是 Laravel 的初学者。我阅读了关于实现全局变量的讨论。但就我而言,我想从可以在控制器中使用的视图中设置全局变量的值。

我在 adminHome.blade.php 按钮中的示例代码

<!--CAMPUS BUTTON-->

                        @foreach($campuses as $campus)
                        <div class="col-md-4">
                            <div class="card card-user box">
                                <div class="image" style="background-color:#00D27F;"></div>
                                <div class="content bg">
                                    <div class="author">
                                        <br><br><br><br><br><br>
                                        <img class="" src="{{ asset('images/icon-school.png') }}" alt="..."/><br><br><br>
                                          <h4 class="title"><b>{{$campus->campus_name}} Campus</b></h4>

            {{--SOMEWHERE HERE I'LL SET THE VALUE OF THE GLOBAL VARIABLE. THE VALUE I SHOULD SET IS {{$campus->id}}--}}

                                            <h5>{{$campus->name}} Campus</h5>

                                        <hr>
                                        <h5 class="title text-center"> 

                                        </h5>
                                          <a href="{{ route('dashboard') }}">
                                                <p>VIEW</p>
                                          </a>
                                    </div>
                                </div> 
                            </div>
                        </div>
                        @endforeach

正如我上面显示的代码,当我单击该按钮时,它还将设置全局变量的值,以便为了继续下一页,将只显示与该校园相关的所有数据。我怎样才能做到这一点?谢谢

【问题讨论】:

    标签: php laravel laravel-5.5 laravel-5.6 laravel-5.7


    【解决方案1】:

    我可以得到你的观点@ 无法从视图访问变量到控制器。 您可以将变量放入会话中。这样您就可以在任何地方使用。

    session(['your_key' => 'your_value']);
    

    【讨论】:

    • 我也可以在像这样$assignments = Assignment::join('areas', 'assignments.area_id','=', 'areas.id') -&gt;where('areas.campus_id', '=', session(['variable' =&gt; $campus-&gt;id]))-&gt;get();这样的查询中使用它吗?
    • 是的,你可以。但不需要像这样写在这里。您在视图中分配会话,因此只需从会话中检索值。像这样 $assignments = Assignment::join('areas', 'assignments.area_id','=', 'areas.id') ->where('areas.campus_id', '=', session('variable') )->get();看这里laravel.com/docs/5.6/session
    • 这就是我在刀片视图中的视图 &lt;a href="{{ route('dashboard'), [$request-&gt;session()-&gt;put('variable', '$campus-&gt;id')]}}"&gt; &lt;p&gt;VIEW&lt;/p&gt;&lt;/a&gt; 中分配变量的方式。我做对了吗?
    【解决方案2】:

    我认为您正在寻找的是当用户按下VIEW 时它会打开校园详细信息是吗?

    在这种情况下你可以这样做:

    {{ route('dashboard',['campus_id' => $campus->id]) }}
    

    您正在使用命名路由 dashboard,您可以使用上述代码将 vars 传递给该路由。

    来源:Laravel Named Routes Docs

    【讨论】:

    • 这样我也可以在其他视图中使用 Campus_id,或者我的意思是在控制器中,例如我可以在 collections.index 的集合控制器中使用 Campus_id,以便显示的值仅用于那个指定校区?
    • 好吧,您刚才所说的,听起来您最好将 ID 存储在会话中,以便您可以在需要时访问它。您是否需要其他视图中可用的每个 Campus_id?还是一次一个?
    • 我在其他视图上需要它
    • 我一直在研究如何在会话中存储并弄清楚如何实现它
    • 好的,你可以像这样存储在会话中:session(['variable' =&gt; $campus-&gt;id]) 然后在其他视图甚至控制器中你可以这样做:if(session()-&gt;has('variable')){ $id = session('variable')}else{dd("Session variable not set");}
    【解决方案3】:

    您可以创建并提交将值存储在后端(例如数据库)中的表单,然后将变量发送到下一个视图return view( 'next_page', ['variable' =&gt; $campus_id] );

    或者,您可以使用一些 JS 或 jQuery 魔法从表单中获取值,然后使用 GET 变量将其发送到下一页。 http://example.com/next-page?variable=campus_id 并用{{ $_GET['variable'] }} 回应它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-13
      • 1970-01-01
      相关资源
      最近更新 更多