yii2 paramètres POST cartographie
j'ai des script js qui envoient des données similaires:
$.ajax({
type: "POST",
url: '/manage/add-shops/',
data: {'id':id, 'shops': shops}
des "magasins" est un tableau avec les ~1000 éléments, de sorte que je devrais l'envoyer par la POSTE.
J'ai un yii2 Contrôleur avec la méthode:
class ManageController extends Controller {
public function actionAddShops($id, $shops=array()) {
....
}
De routage est Ok, mais j'ai cette erreur:
"Missing required parameters: id"
C'est ressembler à ce POSTE params n'est pas associé à la méthode params.
Merci.
Vous devez vous connecter pour publier un commentaire.
Vous avez raison, pour une raison quelconque, Yii2 seulement lie automatiquement OBTENIR des variables, mais malheureusement pas de POSTE.
Cependant, vous pouvez facilement faire de la magie de liaison; tout ce que vous avez à faire est de remplacer la
runAction()
de votre contrôleur. Si vous ne voulez pas le faire manuellement pour chaque contrôleur, il suffit de créer un contrôleur de base et de l'étendre à partir de quand il le faut. Vérifiez le fragment de code suivant:Ensuite, vous serez en mesure d'accéder à votre contrôleur de l'action
$id
et$shops
normalement, comme vous l'habitude de faire dans Yii1.Espère que cette aide.
Donc, il n'est pas natif de POSTE de cartographie, mais nous pouvons mettre en œuvre, comme ceci:
Puis, ajouter au parcours:
Lorsque vous passer des paramètres à une action de contrôleur, ces paramètres ne sont disponibles que si elles sont dans le GET de l'url. Si vous êtes paramètres d'envoi par la POSTE, alors vous aurez besoin d'y accéder via le Yii::$app->request->méthode post.
de sorte que votre fonction se termine à la recherche de quelque chose comme cela;
function actionAny($i,$j,$k)
au lieu defunction actionAny() { $post = Yii::$app->request->post(); if(!isset($post['i'] === null) { return false; } else {$i = $post['i'];}
et ainsi de suite...Ici vous allez.
Ce que je comprends de votre code est de transmettre des valeurs à travers l'ajax à l'aide de la méthode POST, mais si vous êtes à l'aide d'une méthode d'action dans votre contrôleur avec des paramètres, alors cela signifie que cette action doit OBTENIR la méthode pour l'utiliser. Donc, changez simplement à l'ajax méthode pour
Puis vérifier qu'il fonctionne parfaitement.