【问题标题】:Laravel 4 base/master viewLaravel 4 基础/主视图
【发布时间】:2013-08-03 23:27:06
【问题描述】:

我最近遇到了一些问题。有一个模型,我从中提取一些数据和东西。我想在我输入的每个页面上都有一个菜单链接,所以我把它放到了基本/主视图中。但问题是,我需要在每个控制器的每个公共功能上输入->with blabla thing。我怎么能不这样做?我的意思是它周围有吗?我不想在每个控制器方法/功能上都这样做。这是我的代码:

                    @if ( Auth::guest() )

                <li style="float: right;padding-right: 0">
                  <ul class="nav">
                    <li>
                      <a href="{{ URL::to('register') }}">
                        <i class="icon-black icon-plus">
                        </i>

                        <strong>
                          Register
                        </strong>
                      </a>
                    </li>
                    <li>
                      <a href="{{ URL::to('login') }}">
                        <i class="icon-black icon-lock">
                        </i>

                        <strong>
                          Log in
                        </strong>
                      </a>
                    </li>
                  </li>
                </li>
              </ul>

              @else

              <li class="divider-vertical">
              </li>
              <li style="float: right;padding-right: 0">
                <div class="btn-group">
                  <div class="btn btn-primary">
                    <i class="icon-user">
                    </i>
                    {{ (Auth::user()->name) }}
                  </div>

                  <a class="btn btn-primary dropdown-toggle" data-toggle="dropdown" href="#">
                    <span class="icon-caret-down">
                    </span>
                  </a>

                  <ul class="dropdown-menu">
                    <li>

                      <a href="{{ URL::to('account/managment') }}">
                        <i class="icon-user">
                        </i>
                        Account Managment  
                      </a>

                    </li>
                    <li>

                      <a href="{{ URL::to('account/managment/change_credentials') }}">
                        <i class="icon-lock">
                        </i>
                        Change Password
                      </a>

                    </li>
                    <li class="divider">
                    </li>
                    <li>

                      <a href="{{ URL::to('account/logout') }}">
                        <i class="icon-off">
                        </i>
                        Log out
                      </a>

                    </li>

                  </ul>
                </div>

                @endif

【问题讨论】:

    标签: laravel laravel-4


    【解决方案1】:

    你可以定义一个 View Composer :

    View::composer(array('your.first.view','your.second.view'), function($view)
    {
        $view->with('count', User::count());
    });
    

    每次调用视图时,都会自动绑定一个用户数。

    编辑:

    关于在哪里使用它取决于你,这取决于你的应用程序,但如果你没有更好的放置位置,你可以使用 pp/start/global.php。它只需要在您的这些视图之前执行。

    【讨论】:

    • 用户数是什么意思?我不认为我们彼此了解。
    • 这只是一个例子。您需要使用自己的代码。
    • 感谢您的回答,我应该在哪里使用这个?另外,我会将其包含在我的主视图中,例如:@include('your.view.name') ?从未真正使用过 View::composer。另外,我在公共功能中不需要它(仅在几个地方),但我需要它在我的菜单上。我怎么能只在几个功能上做到这一点,但我的菜单位于我的主视图中。每当我进入任何页面时,它都会要求这样做。
    • 你可以把那些 View::composer() 调用放在你的 app/start/global.php 中。刚刚编辑了我的代码,向您展示如何使用相同的代码在多个视图上使用它。
    • 非常感谢您,先生:)
    【解决方案2】:

    @Antonio 的回答是一个很好的方法。你也可以使用 View::share();用更短的代码来完成。

    View::share(array(
        'foo' => 'bar'    
    ));
    

    【讨论】:

    • 只是提醒读者 View::share 将使这些绑定可用于所有视图。
    猜你喜欢
    • 2011-09-28
    • 2016-03-06
    • 2016-06-21
    • 1970-01-01
    • 1970-01-01
    • 2015-06-09
    • 1970-01-01
    • 1970-01-01
    • 2015-09-07
    相关资源
    最近更新 更多