【问题标题】:Laravel: textarea does not refill when using Input::oldLaravel:使用 Input::old 时 textarea 不会重新填充
【发布时间】:2014-04-27 19:19:23
【问题描述】:

当我编写代码以重新填充表单(例如发现错误时)或从表格行中单击“编辑”按钮并转到可编辑表单时,我发现只有输入文本字段会按预期响应. textarea 的字段没有重新填充,所以它是空的,因此,如果我保存它,我会删除 textarea 的内容。 (我知道我最近在问一连串的问题,原因是我已经基本完成了我的申请,我把我无法解决的小问题留到了最后,所以我很抱歉。

这是我所说的一个例子:

这适用于输入文本字段:

作品

<div class="col-md-4">
<label for="relato">Charges</label>
<input type="text" name="expenses" maxlength ="30" class="form-control" 
value = "{{ $user->expenses }}"/>
</div>

也就是说,$user->expenses 填充了单击表格行的“编辑”按钮时出现的表单的文本字段。

但是,这不适用于 textarea 字段:

<div class="row">

              <label for="relato">Description</label>
              <textarea name ="message" id="message" rows="5" cols="100" value = "{{ $user->message }} class="form-control" 
      </textarea>
              </div>

看到了吗?该部分 $user->message 不会将内容传递到表单的文本区域。

类似地:使用 Input::old

适用于输入文本字段

作品

 Email: <input type="text" class="form-control" name="email" {{ (Input::old('email')) ?' value ="' . e(Input::old('email')). '"' : ''  }}>

不适用于文本区域

<div class="form-group">
  <label for="relato">Une petite description</label>
  <textarea id="message" name = "content" rows="10" cols="50" onKeyPress class="form-control"  {{ (Input::old('content')) ?' value ="' . e(Input::old('content')). '"' : ''  }}
  ">
  </textarea>{{ $errors->first('content')}}
        </div>

控制器也在尝试通过发送 ->withInput

来重新填写表单
 if($validator->fails()){

           return Redirect::route('usersgetformtopostads')

                        ->withErrors($validator)

                        ->withInput();                           

                        } 

但是,正如我所说,它只适用于文本字段。不会为我重新填充选择列表或文本区域

顺便说一句,我在这里查看了一个相关问题,作者说他无法重新填充文件字段,他被告知“你不能”并且他给出了正确的答案,但是,我已经能够重新填充上传的文件,没有任何问题。

【问题讨论】:

    标签: laravel


    【解决方案1】:

    刚刚想通了,把旧值放在括号中,如下所示

    &lt;textarea name="message"&gt;{{ old('message') }}&lt;/textarea&gt;

    【讨论】:

      【解决方案2】:

      textarea 没有value 属性。 textarea 中的值应该在 &lt;textarea&gt;&lt;/textarea&gt; 内,所以在你的情况下:

      <textarea id="message" name = "content" rows="10" cols="50" onKeyPress class="form-control">
      {{{ Input::old('content') }}}
      </textarea>
      

      【讨论】:

        【解决方案3】:

        这是另一种方法,但使用 laravel 的 Forms 组件:

        {{ Form::textarea('content',Input::old('content'),array('id' => 'message')) }}
        

        【讨论】:

          【解决方案4】:

          我想补充一点,如果你对表单和元素使用 Form Class,那么你不需要显式地正确 Input::old('element-name') 来检索前一个的值表单提交。
          只需使用
          {{ Form::text('name', null, array('id'=&gt;'name', 'class' =&gt; 'class-to-apply')) }}
          你可以走了。

          在这里,文本字段的空值将首次为空,如果您使用输入重定向回此页面,那么它将自动获取该值。

          【讨论】:

          • 如果 textarea 的模型不是它所包含的模型,这似乎不起作用。在我的情况下,我有一对一的关系并假设我的表单模型或 $order我需要用 $order->comment->content 来感受 textareas .....我该如何实现?
          • 听不懂你在说什么,再准确点?
          • 请参考我在阅读此主题后发布的问题,也许您会更好地理解我的问题stackoverflow.com/questions/38634074/…
          • @LuyandaSiko,我已经回答了你的问题。检查那个。希望这能帮助你解决你的问题。 :)
          【解决方案5】:

          抱歉回复晚了

          {{Form::textarea('mobile_message', isset($notifications -> mobile_message) ? $notifications -> mobile_message : null, 'id'=> 'mob_id','class' => 'form-control'))}}
          

          【讨论】:

            【解决方案6】:
            <div class="control-group hidden-phone">
                <label class="control-label" for="textarea2">Category Description</label>
                                                       
                <div class="controls">
                    <textarea style="resize:none" name="category_description" required rows="6"> 
                        
                        <div class="control-group hidden-phone">
                            <label class="control-label" for="textarea2">Category Description</label>
                            <div class="controls">
                                <textarea style="resize:none" name="category_description"  required  rows="6"  >{{$category_info->category_description}}</textarea>
                            </div>
                        </div>
                        
            </textarea> </div>

            【讨论】:

              【解决方案7】:

              通常,textarea 没有 value 属性,但有一种方法可以在当前 Laravel 版本(8+)中添加它

              <textarea>{{{ Request::old('content') }}}</textarea>
              

              【讨论】:

                猜你喜欢
                • 2014-05-04
                • 1970-01-01
                • 1970-01-01
                • 2016-10-09
                • 2013-06-10
                • 2013-06-08
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多