Php 如何处理Laravel中故意未定义的变量?

Php 如何处理Laravel中故意未定义的变量?,php,laravel,blade,Php,Laravel,Blade,我在Laravel中有一个视图,用于插入记录和更新记录。对于复选框,我使用以下代码: {!! Form::checkbox('active', 1, $info->active) !!} $info指从数据库中检索到的记录,该记录从控制器传递到视图(我执行类似于$info=MyModel::findOrFail($id))的操作),这显然仅在编辑记录时适用。创建新记录时,此变量不存在,出现以下错误: 未定义变量 这完全有道理,但问题是:解决这个问题的最佳方法是什么。我应该使用

我在Laravel中有一个视图,用于插入记录和更新记录。对于复选框,我使用以下代码:

      {!! Form::checkbox('active', 1, $info->active) !!}
$info
指从数据库中检索到的记录,该记录从控制器传递到视图(我执行类似于
$info=MyModel::findOrFail($id)
)的操作),这显然仅在编辑记录时适用。创建新记录时,此变量不存在,出现以下错误:

未定义变量


这完全有道理,但问题是:解决这个问题的最佳方法是什么。我应该使用条件语句吗?我应该创建一个空变量吗?我应该使用两个不同的复选框吗?这里推荐什么?

插入和删除都应该使用两个单独的视图。这就是为什么路由资源有索引、创建、存储、显示、编辑、更新、删除等方法

在您的情况下,我建议您使用两种视图,并遵循约定优先于配置的原则:

public function create()
{
  return view('post.create');
}

public function store(Request $request)
{
  $post = Post::create($request->all());
}

public function edit()
{
  return view('post.edit');
}

public function update($id, Request $request)
{
  $post = Post::whereId($id)->update($request->all());
}

您可以为创建表单设置
$info=newmymodel()


它在概念上很有意义,保持模板干净,避免重复。

在创建模板时,您可以按照以下方式进行操作:

// Controller.
$user = new User;

// View
Form::model($user, ['route' => ['user.store', $user]])

我以前使用过这种方法来准确地解决您的问题。

为什么不简单地用isset检查变量?是的,这是选项之一。但这是推荐的方式吗?我该在哪里做呢?我似乎无法在这个函数中做到这一点,所以它需要围绕着它。