Accedi ai dati degli elementi HTML e invia al controller in PHP
-
13-11-2019 - |
Domanda
Sono un super principiante in PHP e sto usando un framework PHP MVC chiamato YII. Non riesco a trovare articoli che spiegano come ottenere valori di elementi HTML con PHP. Ovunque guardo, è tutto su come ottenere valori dai campi da forma dopo un post in qualche altra vista. C'è comunque per ottenere valori di campo e inviarli a un controller in PHP e tornare alla vista originale.
In .NET MVC uso solo jQuery per ottenere campi da modulo e fare una chiamata AJAX. Non sono dati sensibili, quindi non sono preoccupato per la sicurezza. Mi piace Ajax perché non faccio alcun post di pagina, mando solo i miei dati e rimango sulla stessa pagina in cui mi trovavo.
C'è un modo per fare un tipo di cosa MVC Ajax con PHP? Leggi i valori degli elementi HTML e inviali a un controller per la manipolazione dei dati?
Soluzione
Funziona allo stesso modo. Yii viene in bundle con jQuery, quindi tu
Basta usare jQuery per ottenere campi da forma e fare una chiamata Ajax
Ad qualche funzione controller, fai quello che vuoi con esso e restituisci una risposta, con PHP echo
.
Se conosci già un po 'di jQuery, il lato del client non dovrebbe essere molto diverso da .NET MVC.
Modificare:
Per aggiungere un <script>
All'HTML generato vedi RegisterScript.
Per creare URL usa il file Createurl funzione.
Per aggiungere opzioni AJAX al codice dei tag HTML sembra simile a:
echo CHtml::checkBox('mybox',false,
array(// array for htmloptions, we also pass ajax options in here
'class'=>'checkBoxes_class',
'ajax'=>array(// this is ajax options for jquery's ajax
'type'=>'POST',
'url'=>Yii::app->createUrl('xyz',array('clickedboxid'=>'mybox')), // here you passed clickedboxid as a get variable
'beforeSend'=>'function(){}',
'success'=>'',
// etc etc
)
)
);
Ogni funzione HTML Tag Generator Helper prende l'array HTMloptions, dove possiamo anche passare Opzioni Ajax.
Durante la lettura di questi valori nel controller:
public function actionSomeAction($id){
// $id is mybox
echo "Hello"; // this is returned as response to the client
}
Spero che ti basta per iniziare.