====== Przekazywanie danych ====== ---- ===== Zamiast $_POST ===== $post = Yii::$app->request->post(); $post_modelu = $post['nazwa klasy modelu']; ===== Przekazywanie zmiennych z kontrolera do layoutu (main.php)===== W kontrolerze deklarujemy zmienne globalne i nadajemy im odpowiednie wartości class PomiocController extends \yii\web\Controller { public $nr_menu = 1; public $nr_opcji; public function actionIndex() { $this->nr_opcji = 10; $model = Pomoc::find() ->where(['publikacja' => 1]) ->andWhere(['>', 'status', 0]) ->all(); ... W layoucie (main.php) context->nr_menu) ? $this->context->nr_menu:'-' ?> context->nr_opcji) ? $this->context->nr_opcji:'-' ?> ===== Przekazywanie danych metodą POST ===== Używając Helpera Html można za pomocą zwykłego odnośnika przekazać dowolne dane metodą POST. Przykład: echo Html::a( 'Tekst odnośnika', ['/test/view','id'=>1], ['data' => ['method' => 'post'] ]); Powyższy przykład tworzy odnośnik przesyłający do test/view parametr name o wartości zmiennej $wartosc metodą POST. Dostęp do tego parametru w akcji controllera jest identyczny jak dla metody GET. aby uniemożliwić przesyłanie danych metodą GET W kontrolerze należy dodać: public function behaviors() { return [ 'verbs' => [ 'class' => VerbFilter::className(), 'actions' => [ 'delete' => ['POST'], 'view' => ['POST'], ], ], ]; } public function actionView($id) { return $id; } **Zalety:** \\ można przesyłać duże ilości danych w bezpieczny sposób **Uwaga !** \\ w GridView format atrybutu w którym będzie powyższy odnośnik : 'format' => 'raw' ['attribute' => 'test', 'label' => 'Prześlij', 'format' => 'raw', 'value' => function ($model) { return Html::a('Wykonaj', ['/controller/akcja'], [ 'title' => 'Podpowiedź ...', 'data' => [ 'method' => 'post', 'params' => [ 'par1' => $model->id_p1, 'par1' => $model->id_p2, 'par3' => $model->id_p3 ] ] ]); }, ], ===== Komunikat na następnej stronie ===== Yii::$app->session->setFlash('success', "Komunikat."); ===== Redirect metoda POST ===== Widget common->widgets {{:port_109.png?200|}} **redirpost.php** \\ 'redir_form', 'action'=>$url ]); ?> $value): ?> registerJs(" $('#redir_form').submit() "); $url = '/podania/podglad'; $data = json_encode(['id' => $id_podania_realizacja]); return $this->redirect(['/podania/redirpodglad', 'url' => $url, 'data' => $data]); **RedirpostWidget.php** \\ url; $action = Url::to(array_merge($tab, $this->data)); return $this->render('redirpost', [ 'url' => $action, 'data' => $this->data ]); } } **Controller**\\ use common\widgets\redirpost\RedirpostWidget; ...... $url = '/podania/podglad'; $data = ['id' => $id]; echo RedirpostWidget::widget(['url' => $url, 'data' => $data]);