update rutas route metodo method_field formulario form php forms laravel routes put

php - rutas - route update laravel



Laravel form html con método PUT para rutas PUT (5)

Tengo esto en mis rutas:

+--------+---------------------------+--------------+--------------------------- ---------+----------------+---------------+ | 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

Ahora, quiero hacer un formulario html que usará el método PUT. Aquí están mis códigos:

<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>

Pero no trabajo para enviar el formulario a post.edit.

He buscado en Google y tengo una solución que debo usar

{{form:...etc

Pero, quiero que el formulario todavía se puede hacer por el estilo CSS. ¿Hay alguna solución chicos? Gracias


Es muy fácil, solo necesitas usar method_field(''PUT'') así:

HTML :

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

o

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

¡Saludos!


PUEDE agregar clases de css y cualquier tipo de atributos que necesite para la plantilla de blade, intente esto:

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

Si no quieres ir por la hoja, puedes agregar una entrada oculta. Esta es la forma que Laravel hace, de cualquier manera:

Nota: dado que los formularios HTML solo admiten los métodos POST y GET, PUT y DELETE se falsificarán al agregar automáticamente un campo oculto de método a su formulario. (Laravel docs)

<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>


Si está utilizando el elemento HTML Form en lugar de Laravel Form Builder , debe colocar method_field entre la etiqueta de apertura de formulario y el final de cierre. Al hacer esto, puede definir explícitamente el tipo de método de formulario .

<form> {{ method_field(''PUT'') }} </form>


Solo usa así en algún lugar dentro del formulario

@method(''PUT'')


en su punto de vista cambiar a la hoja

{{ 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() }}

en realidad puedes usar la forma cruda como tu pregunta. pero no lo recomiendo dan itulah salah satu alasan agan belajar framework, simple, dan cepat. Así kenapa pake forma cruda kalo ada yang lebih mudah. jeje orgulloso de ser indonesio

referencia (forma de hoja de laravel) [ http://laravel-recipes.com/recipes/124/opening-a-new-html-form]