За последние 24 часа нас посетили 35045 программистов и 1746 роботов. Сейчас ищут 818 программистов ...

Передача данных с контроллера в шаблон

Тема в разделе "Yii", создана пользователем victor_orlov, 14 сен 2021.

  1. victor_orlov

    victor_orlov Активный пользователь

    С нами с:
    16 июл 2019
    Сообщения:
    41
    Симпатии:
    0
    Изучаю доку, пробую с контроллера передавать в шаблон страницы.

    Код (Text):
    1. <?php
    2. namespace frontend\controllers;
    3. use frontend\models\Tasks;
    4. use yii\web\Controller;
    5.  
    6. class BrowseController extends Controller {
    7.     public function actionIndex()
    8.     {
    9.         $task = Tasks::find()->all();
    10.         return $this->render('browsepage',compact('task'));
    11.  
    12.     }
    13. }
    Контроллер BrowseController.php по пути - D:\OSPANEL\domains\yii-taskforce\frontend\controllers, шаблон страницы browsepage.php куда хочу перекинуть находится по пути - D:\OSPANEL\domains\yii-taskforce\frontend\web.

    Выводу вот так -
    Код (Text):
    1. <?php echo $task; ?>
    Пишет ошибку
    Notice: Undefined variable: task in D:\OSPANEL\domains\yii-taskforce\frontend\web\browsepage.php on line 1
    Как поправить?
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.817
    Симпатии:
    1.333
    Адрес:
    Лень
    создай чистый пхп скрипт и внеси туда свое

    PHP:
    1. <?php
    2.  
    3. echo $task;
    вот тебе и ответ будет
     
  3. victor_orlov

    victor_orlov Активный пользователь

    С нами с:
    16 июл 2019
    Сообщения:
    41
    Симпатии:
    0
    не работает решение
     
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.817
    Симпатии:
    1.333
    Адрес:
    Лень
    Какое решение ? переведи БАНАЛЬНО ошибку на индуский, может тогда понятно будет в чем проблема o_O ТыЖеПрограммист
     
  5. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    LOL.
    @victor_orlov я понятия не имею про вот это: $this->render(). но походу он данные не принимает.
    ты вероятно знаешь что делает compact(). на "принимающей" стороне ему в пару должен быть extract(). он есть? пошагово продебажь.
    --- Добавлено ---
    https://www.php.net/compact
    https://www.php.net/extract
     
  6. Artur_hopf

    Artur_hopf Старожил

    С нами с:
    7 май 2018
    Сообщения:
    2.264
    Симпатии:
    405
    Просто контроллер не в курсе где лежит его вид.
    render('browsepage' предпологает что она лежит в пути по умолчанию для вида в папке browse. Но вид у него лежит в папке web. Вот и вся проблема
    И вот эта херь <?php echo $task; ?> . Человек скорее всего не запускает контроллер. А тупо запустил фаил browsepage.php
    --- Добавлено ---
    Напиши в контроллере
    PHP:
    1. <?php
    2. namespace frontend\controllers;
    3. use frontend\models\Tasks;
    4. use yii\web\Controller;
    5. class BrowseController extends Controller {
    6.     public function actionIndex()
    7.     {
    8.         echo 'test';
    9.     }
    10. }
    чтобы убедится что ты запускаешь контроллер
    --- Добавлено ---
    Ну и в конфигурационном файле должен быть по умолчанию твой контроллер, чтобы не прописывать его в урле
    PHP:
    1. 'defaultRoute' => 'browse',