将视图附加到现有视图

时间:2014-03-06 18:46:07

标签: view laravel blade

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

在深入了解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开始这样做。但不,你拥有的是非常强大的。我希望这有助于我帮助我。