Laravel формирует html-код с методом PUT для маршрутов PUT


У меня есть это в моих маршрутах:

+--------+---------------------------+--------------+---------------------------                                                                                                                ---------+----------------+---------------+
| Domain | URI                       | Name         | Action                                                                                                                                             | Before Filters | After Filters |
+--------+---------------------------+--------------+---------------------------                                                                                                                ---------+----------------+---------------+
|        | GET|HEAD /                |              | postcontroller                                                                                                                                     | auth           |               |
|        | GET|HEAD login            |              | homecontroller@dologin                                                                                                                             |                |               |
|        | POST login                |              | homecontroller@dologin                                                                                                                             |                |               |
|        | GET|HEAD logout           |              | homecontroller@dologout                                                                                                                            |                |               |
|        | GET|HEAD post             | post.index   | postcontroller@index                                                                                                                               |                |               |
|        | GET|HEAD post/create      | post.create  | postcontroller@create                                                                                                                              |                |               |
|        | POST post                 | post.store   | postcontroller@store                                                                                                                               |                |               |
|        | GET|HEAD post/{post}      | post.show    | postcontroller@show                                                                                                                                |                |               |
|        | GET|HEAD post/{post}/edit | post.edit    | postcontroller@edit                                                                                                                                |                |               |
|        | PUT post/{post}           | post.update  | postcontroller@update                                                                                                                              |                |               |
|        | PATCH post/{post}         |              | postcontroller@update                                                                                                                              |                |               |
|        | DELETE post/{post}        | post.destroy | postcontroller@destroy 

Теперь я хочу создать html-форму, в которой будет использоваться метод PUT. Вот мои коды:

<form class="col-md-12" action="<?php echo URL::to('/');?>/post/<?=$post->postID?>" method="put">
    <div class="form-group">
        <textarea type="text" class="form-control input-lg" placeholder="Text Here" name="post"><?=$post->post?></textarea>
    </div>
    <div class="form-group">
        <button class="btn btn-primary btn-lg btn-block" type="submit" value="Edit">Edit</button>
    </div>
</form>     

Но я не работаю, чтобы отправить форму в post.edit.

Я погуглил и получил решение, которое я должен использовать

{{form:...etc

Но я хочу, чтобы форма все еще могла быть выполнена с помощью CSS-стиля. Есть ли какое-нибудь решение, ребята? Спасибо

Author: Jeff Puckett, 2015-01-26

5 answers

Вы МОЖЕТЕ добавить css-классы и любые атрибуты, необходимые для шаблона блейда, попробуйте следующее:

{{ Form::open(array('url' => '/', 'method' => 'PUT', 'class'=>'col-md-12')) }}
.... wathever code here
{{ Form::close() }}

Если вы не хотите идти по лезвию, вы можете добавить скрытый ввод. Это форма, которую делает Laravel, любым способом:

Примечание: Поскольку HTML-формы поддерживают только ОТПРАВКУ и ПОЛУЧЕНИЕ, РАЗМЕЩЕНИЕ и УДАЛЕНИЕ методы будут подделаны путем автоматического добавления скрытого поля _method к твоей форме. (Документы Laravel)

<form class="col-md-12" action="<?php echo URL::to('/');?>/post/<?=$post->postID?>" method="POST">

<!-- Rendered blade HTML form use this hidden. Dont forget to put the form method to POST -->

<input name="_method" type="hidden" value="PUT">

<div class="form-group">
    <textarea type="text" class="form-control input-lg" placeholder="Text Here" name="post"><?=$post->post?></textarea>
</div>
<div class="form-group">
    <button class="btn btn-primary btn-lg btn-block" type="submit" value="Edit">Edit</button>
</div>
</form>     
 21
Author: Edgar Orozco, 2015-01-26 03:18:29

, Если вы используете HTML форму элемент вместо Laravel форма построитель, Вы должны разместить method_file между форма открывающий тег и закрывающий конец. Делая это, вы можете явно определить метод формы тип.

<form>
{{ method_field('PUT') }}
</form>
 26
Author: mistertandon, 2018-03-28 07:15:28

Просто используйте вот так где-то внутри формы

@method('PUT')
 2
Author: ZZA, 2018-07-16 07:30:09

В вашем представлении блейд изменится на

{{ Form::open(['action' => 'postcontroller@edit', 'method' => 'PUT', 'class' = 'your class here']) }}

<div>
{{ Form::textarea('textareanamehere', 'default value here', ['placeholder' => 'your place holder here', 'class' => 'your class here']) }}
</div>

<div>
{{ Form::submit('Update', ['class' => 'btn class here'])}}
</div>

{{ Form::close() }}

На самом деле вы можете использовать необработанную форму, такую как ваш вопрос. но я не рекомендовал этого делать. дан итула салах сату аласан аган беладжар фреймворк, простой, дан цепат. итак, кенапа паке в сырой форме кало ада ян лебих мудах. хе-хе. горжусь тем, что я индонезиец.

Ссылка (форма лезвия laravel) [http://laravel-recipes.com/recipes/124/opening-a-new-html-form]

 1
Author: Dark Cyber, 2015-01-26 02:44:30

Очень просто, вам просто нужно использовать method_field('PUT') вот так:

HTML:

<form action="{{ route('route_name') }}" method="post">
    {{ method_field('PUT') }}
    {{ csrf_field() }}
</form>

Или

<form action="{{ route('route_name') }}" method="post">
    <input type="hidden" name="_method" value="PUT">
    <input type="hidden" name="_token" value="{{ csrf_token() }}">
</form>

С уважением!

 1
Author: Radames E. Hernandez D.L.R., 2018-08-23 18:43:10