【问题标题】:laravel using data in view that has been sent from controllerlaravel 使用从控制器发送的视图中的数据
【发布时间】:2014-06-24 16:08:55
【问题描述】:

我总是像 ->with(array('message'=>'there is an error ')) 这样从视图中发送数据,并且它有效。

我想让客户编辑一些信息,所以当他/她点击编辑时,控制器中的这个功能正在执行:

public function edit($id)
    {
        $waitingTimes = WaitingTimes::find($id);
        return View::make('waitingtimes.edit')->with(array(
            'verticalMenu' => 'none',
            'verticalMenuTab' => 'none',
            'data' => $waitingTimes
        ));
    }

所以在后面的视图中,我应该可以这样说:

$data->startTime, $data->endTime, $data->id, $data->restaurant_id

但每次我这样做时,我都会在浏览器上打印$data->startTime,但我应该得到startTime 属性的值。

这是我的看法:

<div class="oneInfo">
            {{ Form::text('startTime', '', array('class' => 'time ui-timepicker-input', 'id' => 'startTime', 'autocomplete' => 'off'))}}
            <span class="errorMessage">
                <?php
                echo $errors->first('startTime');
                ?>
            </span>
        </div>

视图有一个输入文本,我希望该输入文本填充从控制器发送的数据。

请问我该怎么做?

【问题讨论】:

  • 从外观上看,您可以使用 form model binding 完成此操作。有一个免费的 Laracast 处理这个主题。
  • @Jeemusu 听起来很有趣,让我试试
  • @Jeemusu 以及如何填写输入?它们会自动填充吗?在我的情况下,他们不是
  • 它们应该自动填充是的,我注意到你的代码但是你通过 Form::text 方法的第二个参数将值设置为空字符串。
  • @Jeemusu 是的,你说得对,当我在第二个参数中执行 $data-&gt;startTime 时,我已经填写了数据,非常感谢请输入答案以接受它

标签: php laravel laravel-4 blade


【解决方案1】:

Form::text() 方法的第二个参数允许您将要分配给输入元素的值传递给它。您的表单输入声明当前正在将输入值设置为空字符串。

处理此问题的最佳方法是将您的空字符串替换为$value=null

{{ Form::text('startTime', $value=null, array('class' => 'time ui-timepicker-input', 'id' => 'startTime', 'autocomplete' => 'off'))}}

这将自动将值替换为您的模型数据或用户输入的数据(如果验证失败并且您重定向回表单)。

从外观上看,您还可以通过使用form model bindingWaitingTimes 模型绑定到您的表单来使事情变得更容易。

【讨论】:

  • 只有一件事,当我提交表单时,我得到了MethodNotAllowedHttpExcpetion,这与您告诉我的Form Model Binding 有关吗?
  • 如果没有更多信息无法确定,但听起来可能是您的路线声明?您创建了发布路线吗?
  • 在更新方法中,我想,我需要put 方法而不是post 对吧?所以我在我的表单中声明了一个put 请求,如下所示:{{Form::model($data, array( 'route' =&gt; array('waitingtimes.update', $data-&gt;id) , 'class' =&gt; 'mainInformationContrainer', 'method', =&gt; 'put' ))}} 我忘记了什么吗?
  • 如果您的更新方法响应put 请求,那么您将需要put。您可能还需要指定将数据提交到的路由。 'route' =&gt; array('foo.bar', $data-&gt;id)
  • 我的表单中已经有了这个设计。好的没问题,我会自己检查问题,谢谢
猜你喜欢
  • 2021-04-07
  • 2020-08-26
  • 2021-03-25
  • 2016-07-14
  • 1970-01-01
  • 1970-01-01
  • 2018-08-06
  • 2019-11-13
  • 2016-12-27
相关资源
最近更新 更多