web-dev-qa-db-fra.com

Laravel forme html avec la méthode PUT pour les routes PUT

J'ai ceci dans mes itinéraires:

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

Maintenant, je veux faire un formulaire HTML qui utilisera la méthode PUT. Ici ce sont mes codes:

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

Mais je ne travaille pas pour soumettre le formulaire à post.edit.

J'ai googlé et j'ai eu la solution que je dois utiliser 

{{form:...etc

Mais, je veux que le formulaire puisse encore être créé avec un style CSS.

20

Vous POUVEZ ajouter des classes css, et tout type d’attributs dont vous avez besoin pour le modèle de lame, essayez ceci:

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

Si vous ne voulez pas utiliser la lame, vous pouvez ajouter une entrée cachée. C'est la forme que Laravel fait, de toute façon:

Remarque: les formulaires HTML ne supportant que POST et GET, PUT et DELETE les méthodes seront spoofées en ajoutant automatiquement un champ masqué _method à votre forme. (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>     
27
Edgar Orozco

Si vous utilisez Élément de formulaire HTML au lieu de Laravel Form Builder , vous devez placermethod_fieldentre votre balise d’ouverture de formulaire En faisant cela, vous pouvez explicitement définir form method type.

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

C'est très facile, il vous suffit d'utiliser method_field('PUT') comme ceci:

HTML:

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

ou

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

Cordialement!

7

Il suffit d'utiliser comme ça quelque part dans le formulaire

@method('PUT')
7
ZZA

dans votre vue changer de lame à

{{ 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 fait, vous pouvez utiliser une forme brute comme votre question. mais je ne l'ai pas recommandé. dan itulah salah satu alasan agan belajar cadre, simple, dan cepat. alors kenapa pake forme brute kalo ada yang lebih mudah. héhé. fier d'être indonésien.

référence (forme de lame de laravel) [ http://laravel-recipes.com/recipes/124/opening-a-new-html-form]

0
Dark Cyber