我使用laravel 4.0 Im tyring仅在变量==0时显示布局(以防用户试图导航到url而不是点击)(我知道我可以重定向而不是扩展,但这目前是不可取的)
我试图让布局只在用户手动导航到页面时进行扩展,如果他们在进入函数时没有发送ajax请求,那么noajax将设置为true,因此,如果用户在哪里手动导航到url,它仍然会显示页面,但会扩展布局。
@if ($noajax==1)
@扩展("layouts.master")
@endif
@区段("内容")
//控制器
public function test($id,$model)
{
if (Request::ajax())
{
//$foreign_key and $model must be <> null
if ($id == null || $model == null) {
$this->render('../Errors/missing_arg', 'error');
return;
}
if($model=="ArtObj")
{
$partable = "art_objects";
$path='img/art-objects/';
}
$parid=$id;
$noajax=0;
$mediaimgs = Media::where('parent_id' , $id )->where('parent_table', $partable)->paginate(15);
$response = Response::Json($mediaimgs);
return View::make('/Admin/manageimage/manage_image',compact('parid','mediaimgs','model','path','noajax'));
}
else{
if($model=="ArtObj")
{
$partable = "art_objects";
$path='img/art-objects/';
}
$parid=$id;
$mediaimgs = Media::where('parent_id' , $id )->where('parent_table', $partable)->paginate(15);
$response = Response::Json($mediaimgs);
$noajax = 1;
return View::make('/Admin/manageimage/manage_image',compact('parid','mediaimgs','model','path','noajax'));
}
}
在这种情况下,您应该在控制器中使用两个视图。
在控制器中,您应该使用:
if ($noajax) {
return View::make('noajax');
}
else {
return View::make('ajax');
}
在noajax
视图中,您可以从任何其他视图进行扩展,如果noajax
和ajax
有公共代码,则应将其放在单独的文件中,并在这两个视图中使用@include
来包含代码的公共部分。