1

我正在使用带有控制器布局的 laravel。但是我的应用程序的某些部分我不想使用布局(例如,当将数据返回到支付网关请求时,我发送 XML 数据)。我只想将数据传递给我的视图并单独渲染它,而不需要布局。

我怎样才能做到这一点?我一直在尝试一些方法,但都没有奏效。我可以成功地更改要渲染的布局,但我无法设置在没有布局的情况下渲染视图。

谢谢!

编辑:让我更好地解释一下

我的默认布局是在 Base_Controller 中设置的。然后我所有的控制器都扩展了它,但在其中一个控制器中我不需要布局,正如我上面所说的。也许我需要取消设置默认布局或类似的东西,我不确定。

4

3 回答 3

2

你可以简单地从你的控制器动作中返回一些东西来绕过布局。

function get_xml($id) {
    $user = User::find($id);
    return View::make('user.xml', $user);
}
于 2013-04-11T20:34:29.100 回答
2

在您的控制器函数上,您可以简单地返回一个字符串,该字符串将按原样返回给浏览器。或者,您可以制作一个Laravel\Response对象,这将允许您微调站点的输出,而不仅仅是返回一个字符串。

该类Response有一些在文档中未提及的技巧:默认返回JSON强制下载

您对第一个更感兴趣,它将允许您正确地将响应的内容类型设置为application/xml. 除此之外,您仍然可以使用 XML 视图!像使用 一样生成视图View::make,但不是直接返回它,而是将它存储在一个变量中。要渲染它,请调用render()它 - 它会返回输出。

于 2013-04-11T20:34:46.983 回答
0

一个简单的方法......

假设有一个main布局

 <body>

        @yield('content')

</body>

content将是插入视图的位置。

现在,

如果你想使用布局,使视图页面如下:

@layout('main')

@section('content')
 blah blah your content
@endsection

如果您不想使用布局,请省略上面的代码。

控制器中,两个文件的代码相同。

 return View::make('index');
于 2013-04-11T20:51:51.527 回答