Ho un tipico modulo Yii2 per aggiornare il mio modello con un tipico pulsante di invio. Accanto ad esso, ho un pulsante "Elimina foto", che appare, se c'è qualche foto da eliminare. Il pezzo di vista sembra che:Il pulsante aggiuntivo nel modulo Yii2 invia il modulo invece di chiamare la sua azione
<?= Html::submitButton('Save changes', ['class' => 'btn btn-primary', 'name' => 'edit-button']) ?>
<?php $image = isset($page->photo) ? $page->photo->getImageUrl() : null; ?>
<?php if (isset($image)): ?>
<?= Html::a('Delete photo', ['delete-image', 'lab' => $lab->id, 'kind' => $page->kind], [
'class' => 'btn btn-danger',
'data' => [
'confirm' => 'Do you really want to delete this photo?',
'method' => 'post'
],
]) ?>
<?php endif; ?>
Quando c'è una foto allegata a questo modello e questi due pulsanti appaiono una accanto all'altra, devo commentare 'method' => 'post'
parte al secondo codice del pulsante. Perché, se non lo faccio, il secondo pulsante è ... inviare il modulo (proprio come il primo) anziché chiamare il percorso lab/delete-image
.
Questa è la prima cosa che non capisco. L'intero codice è generato da Gii o incollato con copia da alcuni tutorial di Yii. Nemmeno un po 'della mia invenzione, eppure funziona in modo strano. Cosa mi manca?
Sembra, che il normale Html::a
collegamento (stile solo da Twitter Bootstrap a guardare come un pulsante, ma non essendo un pulsante a tutti) sta presentando una forma, invece di chiamare la sua azione, quando contiene data-method="post"
attributo nel codice elemento. È un bug in Yii2 o mi manca qualcosa?
Ho tolto seconda parte di questa domanda, perché era un risultato di concetto equivoco/semplice battitura. VerbFilter dovrebbe usare 'delete-image' come nome di azione, non' deleteImage' per i nomi di azione a doppia parola. – trejder