如果变量==0,则Laravel扩展/包含布局


Laravel extend/include layout if variable == 0

我使用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视图中,您可以从任何其他视图进行扩展,如果noajaxajax有公共代码,则应将其放在单独的文件中,并在这两个视图中使用@include来包含代码的公共部分。