получить параметр во view

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
zibert02
Сообщения: 203
Зарегистрирован: 2010.11.24, 17:29

получить параметр во view

Сообщение zibert02 »

хочу во вью получить параметр из строки запроса
например такой урл ?r=blabla&id=1
хочу получить 1, пока вижу вариант $_GET['id'], хотел через $id но ругается
или правильно передать id через параметр при рендеринге?
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: получить параметр во view

Сообщение slavcodev »

В MVC правильно обрабатывать запросы пользователя в контроллере.

Код: Выделить всё

Yii::app()->request->getQuery('id);
Жду Yii 3!
zibert02
Сообщения: 203
Зарегистрирован: 2010.11.24, 17:29

Re: получить параметр во view

Сообщение zibert02 »

mc-bear писал(а):В MVC правильно обрабатывать запросы пользователя в контроллере.

Код: Выделить всё

Yii::app()->request->getQuery('id);

так я хочу тупо вывести переменную, ничего обрабатывать не собираюсь
банально вывести- редактирование записи id = $_GET['id']
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: получить параметр во view

Сообщение slavcodev »

то что вводит пользователь должно проверяться
Жду Yii 3!
zibert02
Сообщения: 203
Зарегистрирован: 2010.11.24, 17:29

Re: получить параметр во view

Сообщение zibert02 »

mc-bear писал(а):то что вводит пользователь должно проверяться

ну есть урл http://bla/news.php?id=1
при загрузке ясен пень проверю ид, а как теперь вывести этот же ид?
отобразить его на странице
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: получить параметр во view

Сообщение slavcodev »

zibert02 писал(а):ну есть урл http://bla/news.php?id=1
при загрузке ясен пень проверю ид, а как теперь вывести этот же ид?
отобразить его на странице
если ты его проверил, то сделал это в контроллере (не в представлении же!!!) значит передавай его в представление параметром
Жду Yii 3!
Ekstazi
Сообщения: 1428
Зарегистрирован: 2009.08.20, 22:54
Откуда: Молдова, Бельцы
Контактная информация:

Re: получить параметр во view

Сообщение Ekstazi »

я использую просто $_GET во вьюхе, а в контроллере проверяю входные данные с помощью модели. Это на пару строк сокращает объем кода, и во вьюху не надо передавать доп. параметры.
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: получить параметр во view

Сообщение slavcodev »

Макс, появляется впечатление что ты очень ленивый кодер ) уже не первый раз твой довод лишняя строчка в коде )))
Жду Yii 3!
Ekstazi
Сообщения: 1428
Зарегистрирован: 2009.08.20, 22:54
Откуда: Молдова, Бельцы
Контактная информация:

Re: получить параметр во view

Сообщение Ekstazi »

Ну так и есть в принципе. Я за принцип - меньше кода и работы :) + KISS и тайм-менеджмент.
zibert02
Сообщения: 203
Зарегистрирован: 2010.11.24, 17:29

Re: получить параметр во view

Сообщение zibert02 »

а как быть с виджетом?
получается мне надо в каждом контроллере обрабатывать переменную из урла, слать потом ее в вью, а из вью передавать в виджет?
Ekstazi
Сообщения: 1428
Зарегистрирован: 2009.08.20, 22:54
Откуда: Молдова, Бельцы
Контактная информация:

Re: получить параметр во view

Сообщение Ekstazi »

На самом деле MVC очень размытое понятие, и в вашей схеме виджет может сам брать $_GET параметр как это делают некоторые компоненты yii, например, CSort и CPagination.
Лично я подобных случаях делаю так:

Код: Выделить всё

public function actionIndex()
{
  $model=new MyModel();
  $model->attributes=$_GET['some param'];
  if(!$model->validate())
     throw new CHttpException(404);
     $this->render('index');
}
 

И уже во вьюхе можно подключать виджет, который будет использовать параметр из $_GET . Передавать его виджету необязательно, как и проверять по-новой. О проверке уже модель позаботилась и если что не так, то управление просто не дойдет до виджета. Все зависит от конкретной ситуации, поэтому однозначно верного решения быть не может.
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: получить параметр во view

Сообщение slavcodev »

Ekstazi, по твоей логике зачем тогда в модель передавать $_GET[someParams], пусть модель сама все делает.
не правильно это ИМХО.
по поводу виджета, я бы не стал путать представление и виджет!
я определяю виджет как мини-контроллер, который имеет свои представления,
а представление это только генератор html (хотя не обязательно , в общем ответа пользователю на его запрос), в нем никаких манипуляций с данными, только вывод
Жду Yii 3!
zibert02
Сообщения: 203
Зарегистрирован: 2010.11.24, 17:29

Re: получить параметр во view

Сообщение zibert02 »

про виджет я спросил чтобы не открывать новую тему
как я вижу- виджет это многоповторяющаяся связка контроллер+вью
что хорошо в контроллере-в качестве параметра можно указать имя переменной из урл и потом работать с переменной
а в виджете приходится явно получать переменную через Yii::app()->request->getQuery('category_id');
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: получить параметр во view

Сообщение slavcodev »

zibert02 писал(а):что хорошо в контроллере-в качестве параметра можно указать имя переменной из урл и потом работать с переменной
ну это спорная фича, в Kohana 3, например, ее убрали )
Жду Yii 3!
zibert02
Сообщения: 203
Зарегистрирован: 2010.11.24, 17:29

Re: получить параметр во view

Сообщение zibert02 »

а в чем спорность?
неужели удобнее явно инициализировать переменные которые приходят из урла?
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: получить параметр во view

Сообщение slavcodev »

для минимум две причины, но они распространяются лично ко мне
1) у меня большая часть действий вынесена в класс (extends CAction)
2) да мне привычней когда в действии явно указано что данные берутся из $_GET )

почему в Кохане убрали, надо будет поискать почитать, самому интересно, но не дошел еще до этого
Жду Yii 3!
Аватара пользователя
resurtm
Сообщения: 299
Зарегистрирован: 2010.12.19, 09:13
Откуда: Казахстан, Алма-Ата
Контактная информация:

Re: получить параметр во view

Сообщение resurtm »

Заранее объявленный порядок переменных в экшне убивает всю гибкость роутинга в кохане.
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: получить параметр во view

Сообщение slavcodev »

Ну в yii не важен порядок переменных в экшене
Жду Yii 3!
Ekstazi
Сообщения: 1428
Зарегистрирован: 2009.08.20, 22:54
Откуда: Молдова, Бельцы
Контактная информация:

Re: получить параметр во view

Сообщение Ekstazi »

mc-bear писал(а):Ekstazi, по твоей логике зачем тогда в модель передавать $_GET[someParams], пусть модель сама все делает.
не правильно это ИМХО.
по поводу виджета, я бы не стал путать представление и виджет!
я определяю виджет как мини-контроллер, который имеет свои представления,
а представление это только генератор html (хотя не обязательно , в общем ответа пользователю на его запрос), в нем никаких манипуляций с данными, только вывод
Ну каждый делает по-своему. Посмотри какой код генерирует gii:

Код: Выделить всё

    public function actionUpdate($id)
    {
        $model=$this->loadModel($id);

        // Uncomment the following line if AJAX validation is needed
        // $this->performAjaxValidation($model);

        if(isset($_POST['Model']))
        {
            $model->attributes=$_POST['Model'];
            if($model->save())
                $this->redirect(array('view','id'=>$model->Id));
        }

        $this->render('update',array(
            'model'=>$model,
        ));
    }
 
Я писал о том что зачем передавать доп. параметр во вьюху если он и так доступен из $_GET ? Тем более что известно, что до этого он 100% корректен. Другое дело когда параметр предварительно обрабатывается/меняется. Так что ты немного не так меня понял. И модели я не трогал. Теперь по поводу моделей. Когда используешь CForm, то он все данные из $_POST(или $_GET) загоняет в модель. Это разве некоректное поведение ? Разве эти действия стоит поручать контроллеру ? Так что спор бессмысленный. Все зависит от задачи.
Ekstazi
Сообщения: 1428
Зарегистрирован: 2009.08.20, 22:54
Откуда: Молдова, Бельцы
Контактная информация:

Re: получить параметр во view

Сообщение Ekstazi »

И еще, виджет все таки во вьюхе вызывается. И если в нем идет обработка параметров из $_GET то тогда, в зависимости от контекста, надо передавать это либо как параметр к виджету, либо в самом виджете каким-то образом проверить этот параметр.
Ответить