За последние 24 часа нас посетили 229450 программистов и 1731 робот. Сейчас ищут 2307 программистов ...

Помогите разобраться с yii2 php

Тема в разделе "Yii", создана пользователем arta42, 29 апр 2017.

  1. arta42

    arta42 Новичок

    С нами с:
    29 апр 2017
    Сообщения:
    1
    Симпатии:
    0
    Уважаемые пользователи,подскажите что не правильно работает или как правильно написать код для открытия информации на фронтенде пройдя по ссылке - по нажатии на название?вот скрипты которые выводят информацию на главную но при нажатии на название(ссылку)подробное описание не открываеться,помогите пожайлуста исправить ошибку или переделать скрипт по новому???
    Это класс который должен перехвачивать id и открывать информацию.
    Код (PHP):
    1. <?php
    2. namespace app\models;
    3. class MyList extends \yii\db\ActiveRecord{
    4.    
    5.     public static function tableName()
    6.     {
    7.         return 'category';
    8.     }
    9.  
    10. public static function getAll()
    11. {
    12. $data = self::find()->all();
    13. return $data;  
    14. }
    15.  
    16. public static function getOne($id)
    17. {
    18. $data = self::find()->where(['id'=>$id])->one();
    19. return $data;
    20. }
    21. }
    Это контроллер в котором выводиться информация на экран - выводиться нормально всё работает по нажатии на название не открываеться подробно.
    Код (PHP):
    1. <?php
    2.  
    3. namespace app\controllers;
    4.  
    5. use Yii;
    6. use yii\filters\AccessControl;
    7. use yii\web\Controller;
    8. use yii\filters\VerbFilter;
    9. use app\models\MyList;
    10. class SiteController extends Controller
    11. {
    12. public function actionIndex()
    13. {
    14.     return $this->render('index');
    15. }
    16. public function actionAbout()
    17. {
    18.     return $this->render('about');
    19. }
    20.  
    21. public function actionHello()
    22. {
    23. $var = 'Новинки сериалов:';
    24. $array = MyList::getAll($id);
    25.     return $this->render('hello',['varInView'=>$var,'arrayInView'=>$array]);
    26. }
    27. public function actionView($id)
    28. {
    29.     $one = MyList::getOne($id);
    30.     return $this->render('view',['one'=>$one]);
    31. }
    32. }
    Вот как выглядит файл view
    Код (PHP):
    1. <h1><?php echo $varInView; ?></h1>
    2.  
    3. <div>
    4. <?php foreach($arrayInView as $item): ?>
    5. <p>
    6. <br><a href="
    7. http://on/www/basic/views/category/id"><?php echo $item->name?></a>
    8. <h4><?php echo $item->janr?></h4>
    9. <h4><?php echo $item->god?></h4>
    10. <?php endforeach ?>
    11.  
    12. </div>
    когда я захожу в админскую часть где добавляю эти сериалы и где имею возможность просмотреть любой из добавленных сериалов я копирую ссылку из адрессной строки и заменяю её тогда на какой сериал не нажимию для открытия открываеться тот который был скопирован - чья ссылка и переходит в админскую часть этот код выглядит вот-так
    Код (PHP):
    1. <h1><?php echo $varInView; ?></h1>
    2.  
    3. <div>
    4. <?php foreach($arrayInView as $item): ?>
    5. <p>
    6. <br><a href="http://redd2/framework/basic/web/index.php?r=admin%2Fcategory%2Fview&id=12>"php echo $item->name"?>
    7. <h4><?php echo $item->name?></h4>
    8. </a>
    9. <h4><?php echo $item->janr?></h4>
    10. <h4><?php echo $item->god?></h4>
    11. <?php endforeach ?>
    12.  
    13. </div>
    если я убираю выбран id число 12 получаю ошибку 404 я понимаю что это ссылка совсем другого объекта но подскажите мне как правильно мне сделать ссылку для перехвата id с открытием информации для просмотра?

    Вот action который обрабатывает ссылку

    Код (PHP):
    1. public function actionHello()
    2. {
    3. $var = 'Новинки сериалов:';
    4. $array = MyList::getAll($id);
    5.     return $this->render('hello',['varInView'=>$var,'arrayInView'=>$array]);
    6. }
    7. public function actionView($id)
    8. {
    9.     $one = MyList::getOne($id);
    10.     return $this->render('view',['one'=>$one]);
    11. }
    12. }
     
  2. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Это что за бредоурл? Вы для проекта даже домен не подняли что-ли? id не подставляется динамически, поэтому никуда переходить эта ссылка тем более не будет. Вообще, все ссылки на Yii2 надо генерировать через хелпер: http://www.yiiframework.com/doc-2.0/guide-runtime-routing.html#creating-urls, тогда будут учитываться настройки роутинга, и при их изменении правильным образом меняться урл.
    Доки не читали что-ли? Есть же уже из коробки такая функция:
    http://www.yiiframework.com/doc-2.0/yii-db-baseactiverecord.html#findOne()-detail

    Если по-англицки не можете прочесть (хотя там ничего сложного), есть доки на русском в сети, вот например: https://nix-tips.ru/yii2-api-guides/

    Надо же понимать инструмент, который используете.
     
    denis01 нравится это.