【问题标题】:Append View to existing View将视图附加到现有视图
【发布时间】:2014-04-09 14:36:01
【问题描述】:

在 Laravel 4 中,我希望能够通过访问链接或按钮将新视图附加到现有视图。我该怎么做?提前致谢。

【问题讨论】:

  • 你说的是嵌套视图吗?另外,澄清by accessing a link or button 并显示您目前尝试过的代码。
  • 也许我不熟悉嵌套视图,但我希望在按下链接或按钮时将新视图附加到现有视图。更准确地说,两个视图都只会在按下按钮时呈现。在那之前,只有主视图会渲染。我的代码简单明了,即使我不按链接,两个视图也会呈现。我在主视图中使用@include。我不知道要展示什么,因为这不是我想要的。这对我来说只是一个理论。

标签: view laravel blade


【解决方案1】:

您可能想要使用 ajax,发出 ajax 请求,将操作设置为呈现附加视图的路由。在您的父视图中创建一个 id 为“附加”的 div,然后在 ajax 成功时将附加 div 的内容设置为您从 ajax 请求收到的数据,它解决了您的想法......但我不推荐这个想法本身,它用这种方法控制页面结构并不容易......更好的解决方案是拥有一个产生其他视图的主视图,如果您已经有一个主视图,那么创建一个子主视图

【讨论】:

    【解决方案2】:

    在深入研究 Laravel 4 的嵌套视图之后,我已经成功地完成了我想做的事情。毕竟这没什么大不了的。在控制器中我已经这样做了

     $selected_char = User::find(Auth::user()->id)->character()->where('char_name', '=', $character)->first();  
     $title_list = Character::find($selected_char->id)->title()->get();
     $data = array();
                    $data['title_list'] = $title_list;
                return View::make('layout.profile')
                        ->nest('title_details', 'layout.titledetail', $data);
    

    nest 方法的第三个参数必须是一个数组。然后,您可以使用

    访问子视图中的信息

    titledetail.blade.php

     @section('title-content')          
    
        @foreach($title_list as $t)
    
         <div class="infocontainer"> 
            <br> {{$t->char_title}} of {{$t->title_name}} {{$t->title}}                     
    
         </div>
    
        @endforeach
    
        @endsection
    

    我在这里所做的是,我为我的对象保存的每条记录创建了一个名为“infocontainer”的新 div。你不必这样做。 在主视图中,您专门转到您希望将子视图放入的 div 并在那里生成子视图:

    <div class="example">
     @yield('title-content')
    </div>
    

    你甚至不需要 @include('title-content') 只需在指定的 div 中产生它 您甚至可以从控制器发送其他变量

    return View::make('layout.profile')
                        ->nest('title_details', 'layout.titledetail', $data)
                        ->with('example_var1', $example_var1)
                        ->with('example_var1', $example_var1)
    

    甚至嵌套额外的视图。

      return View::make('layout.profile')
                        ->nest('title_details', 'layout.titledetail', $data)
                        ->nest('add_title_details', 'layout.addtitledetails', $data)
    

    不要忘记将新嵌套视图的附加变量放在 $data 数组中。例如,当您想要通过访问链接或按下第一个嵌套视图中的按钮来呈现第二个嵌套视图时,就会出现这种情况。

    差不多就是这样。我什至开始用 Javascript 做这个。但是不,你所拥有的非常强大。我希望这对我有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多