【问题标题】:Laravel 4. Passing parameter to partialLaravel 4. 将参数传递给部分
【发布时间】:2014-08-08 18:44:43
【问题描述】:

我正在使用 Laravel 4 制作销售支持系统。我有一个用于记录项目的表格和另一个用于保存销售记录的表格。在那里,我想让用户添加一个新项目,而不必为新项目表单留下创建销售说明表单。我有一个创建项目表单的部分内容,我在创建项目的常规方式和创建销售说明中使用的方式都使用了该表单。在后一种情况下,除了提交按钮之外,我还需要显示一个取消按钮,因此我打算将一个参数传递给我的表单部分,以告知是否需要取消按钮,如下所示:

项目/create.blade.php:

@include("partials.NewProjectForm", array("cancel" => "no"))

salesnotes/create.blade.php:

@include("partials.NewProjectForm", array("cancel" => "yes"))

partials/NewProjectForm.blade.php:

@if($cancel == "yes")
  {{ Form::button("Cancel") }}
@endif

在“否”情况下,部分按预期接收传递的变量,在“是”情况下,它会抛出“未定义变量:取消”错误。我也尝试过使用 View::make()->with() 包含部分,结果相同。那里出了什么问题?

谢谢。

【问题讨论】:

    标签: parameters laravel-4 partials


    【解决方案1】:

    This answer 最终会提到您的需求。诀窍是使用不同的方法来渲染您的局部。

    假设您在视图下有一个包含名为 header.blade.php 的文件的 partials 目录,请添加以下行以查看您要从中呈现部分内容的脚本:

    {{ View::make('partials.blog.header', array('title' => 'test'))  }}
    

    如果您在 header.blade.php 中添加以下行,您会看到“测试”已传递给您的部分,并且您的部分已被渲染。

    {{ $title }}
    

    希望对您有所帮助! (当我第一次遇到它时,我也对此感到困惑......)

    【讨论】:

      【解决方案2】:

      您的代码很好...该错误可能是由于对“取消”拼写错误或丢失的部分的不同调用引起的。可能部署了错误的“salesnotes/create.blade.php”,或者“salesnote”路由指向了包含部分但未设置“cancel”变量的不同页面?

      顺便说一句 - 这并不能解决您的问题 - 但如果您要创建通用部分,建议在检查 $cancel 的值之前添加对 isset($cancel) 的检查。

      【讨论】:

      • 感谢迷失的哲学家,感谢 perNalin!我终于找到了一种完全不同但成功的方法,忘记了将变量传递给局部变量:我只是根据上下文通过 ajax 调用将表单加载到相应的 div 中并使用 javascript 处理它们。
      猜你喜欢
      • 1970-01-01
      • 2019-01-05
      • 2013-08-17
      • 1970-01-01
      • 1970-01-01
      • 2016-03-02
      • 2011-08-10
      • 2015-11-25
      • 1970-01-01
      相关资源
      最近更新 更多