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-стиля. Есть ли какое-нибудь решение, ребята? Спасибо
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>
, Если вы используете HTML форму элемент вместо Laravel форма построитель, Вы должны разместить method_file
между
форма открывающий тег и закрывающий конец. Делая это, вы можете явно определить метод формы тип.
<form>
{{ method_field('PUT') }}
</form>
Просто используйте вот так где-то внутри формы
@method('PUT')
В вашем представлении блейд изменится на
{{ 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]
Очень просто, вам просто нужно использовать 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>
С уважением!