помогите начинающему

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Аватара пользователя
anton44eg
Сообщения: 2716
Зарегистрирован: 2012.01.25, 13:37
Откуда: Киев

Re: помогите начинающему

Сообщение anton44eg »

Вы точно про yii читаете? Это больше на какой-нибудь angular похоже (с ним не работал, могу ошибаться)
Аватара пользователя
asset
Сообщения: 245
Зарегистрирован: 2012.12.04, 20:50
Откуда: Казахстан

Re: помогите начинающему

Сообщение asset »

Всем привет

есть экшен например

$post = 1+2;

как это передать в рендер c echo?
aznvsk
Сообщения: 47
Зарегистрирован: 2013.09.18, 13:05

Re: помогите начинающему

Сообщение aznvsk »

по п.21)Про модели взял отсюда.
http://ru.wikipedia.org/wiki/Model-View-Controller
Вроде это относится и к yii.
Заранее спасибо.
NEW_NAME
Сообщения: 216
Зарегистрирован: 2013.07.15, 09:52

Re: помогите начинающему

Сообщение NEW_NAME »

Ну вообще-то не только Yii MVC фреймворк.
Если я правильно понял, то пассивная модель - больше структура данных, видимо с возможностью выбора из БД и сохранения, а активная может иметь некоторое дополнительное поведение. Как CActiveRecord в Yii: есть валидация, можно задать поведения, действия перед сохранением, после и тд. Видимо в этом суть
aznvsk
Сообщения: 47
Зарегистрирован: 2013.09.18, 13:05

Re: помогите начинающему

Сообщение aznvsk »

Спасибо за ответы.Они очень помогают.Но все равно пока как-то не доходит.Подскажите,пожалуйста:

14)Не понял,если темы и макета не будет,то приложение все равно будет работать?А что берется тогда в качестве темы и макета по умолчанию?

15)Не понял,если конфига не будет,то приложение все равно будет работать?А что берется тогда в качестве конфига по умолчанию?

19)Тему по умолчанию я устанавливаю в конфиге,а как поменять тему ?Это делается в коде или через конфиг?

20)Я так понимаю ,что конфиг нужен,если что-то меняется по умолчанию.Если конфига не будет,то все настройки по умолчанию Yii останутся.В конфиге прописываются только строчки меняющие значения по умолчаниюЭто правильно?

Заранее спасибо.
aznvsk
Сообщения: 47
Зарегистрирован: 2013.09.18, 13:05

Re: помогите начинающему

Сообщение aznvsk »

С последними вопросами разбираюсь.Вроде понятно.Но нет уверености,что прав.
Кому нетрудно,дайте, пожалуйста,в двух словах,Ваши ответы.
R3D3
Сообщения: 352
Зарегистрирован: 2010.04.11, 14:52

Re: помогите начинающему

Сообщение R3D3 »

aznvsk писал(а): 14)Не понял,если темы и макета не будет,то приложение все равно будет работать?А что берется тогда в качестве темы и макета по умолчанию?
Если ни одной темы нету, то рендерятся view файлы, расположенные рядом с контроллерами (в директории ../views/*)
15)Не понял,если конфига не будет,то приложение все равно будет работать?А что берется тогда в качестве конфига по умолчанию?
Нет не будет. Конфиг всегда должен передаваться приложению при его создании

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

Yii::createWebApplication($config)->run();
19)Тему по умолчанию я устанавливаю в конфиге,а как поменять тему ?Это делается в коде или через конфиг?
Можно в конфиге, а можно и в коде поменять, если потребует логика.
20)Я так понимаю ,что конфиг нужен,если что-то меняется по умолчанию.Если конфига не будет,то все настройки по умолчанию Yii останутся.В конфиге прописываются только строчки меняющие значения по умолчаниюЭто правильно?

Заранее спасибо.
Только что попробовал: можно в качестве конфига передать пустой массив, и приложение все равно будет работать. Другое дело что с таким приложением сделать ничего полезного будет нельзя, на практике не встречал ни одного приложения, которое работало бы без конфига.
Yii Jabber Conference: yii@conference.jabber.ru
Bio man
Сообщения: 609
Зарегистрирован: 2013.07.22, 10:40

Re: помогите начинающему

Сообщение Bio man »

14) Одноименный макет и одноименное представление из папки application.vews. Если и они отсутствуют то будет выброшено исключение с описанием ошибки (не уверен, но по идее так и должно быть).
15) Ты попробуй. Если работает - смотри исходный код. Я не проверял.
19) Yii::app()->theme = 'название темы';
20) Что? Как понять фразу "меняется по умолчанию"? Конфиг нужен для того, что бы сконфигурировать приложение, то есть сделать импорт необходимых классов, настроить компоненты и задать параметры по умолчанию, если это необходимо. Например, defaulController или language.

Вывод. Не ленись читать документацию, там ответы на 90% твоих вопросов.
http://yiiframework.ru/doc/guide/ru/index
и затем
http://yiiframework.ru/doc/cookbook/ru/index
aznvsk
Сообщения: 47
Зарегистрирован: 2013.09.18, 13:05

Re: помогите начинающему

Сообщение aznvsk »

Спасибо все за ответы.Понемногу доходит.
Подскажите,пожалуйста,еще один вопрос общего плана.
Есть страница с тремя элементами (для простоты) и эти три элемента могут располагаться вертикально или горизонтально,и имеют два варианта оформления(цвет,шрифт).
Т.е.всего 4 варианта.
Можно сделать :
1)весь код занести в контроллер и сделать 4 контроллера;
2)можно вертикальность/горизонтальность вынести в layout ,а для цвета,шрифта сделать два представления.И все в папках приложения.
3) можно вертикальность/горизонтальность вынести в layout ,а для цвета,шрифта сделать два представления.И все в папках отдельных тем.
4) можно вертикальность/горизонтальность вынести в layout ,а для цвета,шрифта сделать два представления.И все в папках отдельных модулей.
Понятно,могут быть еще варианты.

А как более грамотно для данного примера.Заранее спасибо.
Bio man
Сообщения: 609
Зарегистрирован: 2013.07.22, 10:40

Re: помогите начинающему

Сообщение Bio man »

1) что? зачем 4 контроллера?

Вижу 2 решения.
1) Темизация
2) Динамическое подключение CSS файла через http://www.yiiframework.com/doc/api/1.1 ... ile-detail
aznvsk
Сообщения: 47
Зарегистрирован: 2013.09.18, 13:05

Re: помогите начинающему

Сообщение aznvsk »

Спасибо за ответ.Понемногу доходит.
Подскажите,пожалуйста,еще один вопрос общего плана.


1)Есть приложение,есть тема .Я так понимаю,если подключена тема-то все отображение берется из views темы,если там чего-то нет из views приложения protected/views.


2)Есть приложение,есть тема модуля,есть модуль.Если есть модуль,и тема для модуля ,то все отображения берутся из папки темы модуля,если чего -то нет из view самого модуля.Если и в папке модуля нет,то из папки приложения protected/views.

Вопрос :я правильно понимаю?
Bio man
Сообщения: 609
Зарегистрирован: 2013.07.22, 10:40

Re: помогите начинающему

Сообщение Bio man »

да, так. Но ты немного путаешься в понятиях.
1) Да.
2) Нет такого понятия как тема модуля. Есть тема, она общая для всего, для модулей, для виджетов, для приложения. Есть такое понятие, как темизация модуля или виджета, это значит, что в папке с темой (webroot.themes.themeName.views) создается папочка соответствующая имени класса, и в этой папки хранятся темизированные файлы. Если файл там отсустсвует, то Yii ищет этот же файл в этой же директории но только в application.views.
Bio man
Сообщения: 609
Зарегистрирован: 2013.07.22, 10:40

Re: помогите начинающему

Сообщение Bio man »

Поправочка, файлы для виджета/модуля ищутся в подпапке views виджета/модуля
aznvsk
Сообщения: 47
Зарегистрирован: 2013.09.18, 13:05

Re: помогите начинающему

Сообщение aznvsk »

Спасибо всем за ответы.Что-то понял.
Подскажите,пожалуйста,русским языком,что такое
1)виджет 2)компонент 3)скин виджета.
И такой вопрос-
4)Yii помогает решать проблемы кроссбраузерности?
Заранее спасибо.
Аватара пользователя
anton44eg
Сообщения: 2716
Зарегистрирован: 2012.01.25, 13:37
Откуда: Киев

Re: помогите начинающему

Сообщение anton44eg »

1) http://www.yiiframework.com/doc/guide/1 ... view#sec-3
2) http://www.yiiframework.com/doc/guide/1 ... .component
3) http://www.yiiframework.com/doc/guide/1 ... ming#sec-6
4) Yii не имеет никакого отношения к кроссбраузерности
zaxvat
Сообщения: 2
Зарегистрирован: 2013.09.23, 22:01

Re: помогите начинающему

Сообщение zaxvat »

Можно тоже вопрос (чтобы не плодить ветки "помогите начинающему"):
Как извлечь данные из формы? Хочу фильтровать вывод списка, т.е. извлечь данные из формы, изменить sql запрос, и обновить страницу.
Код экшена в контроллере:

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

$form = new FilterForm();
if(isset($_POST['FilterForm'])) {
    $form->attributes=$_POST['FilterForm'];
    if($form->validate()) {
        $dataProvider=new CActiveDataProvider('VehicleUnitLite',
               array('criteria'=>array('condition'=>'issue_date > '.$form->issueDateStart.' and issue_date <= 2013')));
        $this->render('index',array('dataProvider'=>$dataProvider,'form'=>$form));
    }
}
else {
      $dataProvider=new CActiveDataProvider('VehicleUnitLite');
      $this->render('index',array('dataProvider'=>$dataProvider,'form'=>$form));
}
Изначально страница показывается нормально, но отправке формы $form->issueDateStart имеет значение null, соответственно, ошибка. Хотя значение в POST запросе отправляется, firebug'ом проверил. Такая запись тоже не работает:

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

 $form['issueDateStart']
Может быть, я вообще неверным путем иду, и здесь нужен фильтр? Но, как я понял, фильтр возвращает только булево значение, т.е. можно продолжать или нет? Или я не прав? В книжке очень мало про фильтры написано.
Вобщем, я совсем запутался. Плиз хелп.
aznvsk
Сообщения: 47
Зарегистрирован: 2013.09.18, 13:05

Re: помогите начинающему

Сообщение aznvsk »

Спасибо всем за ответы.Помогают.Буду читать.
На вопросы ,которые задают другие люди,я пока не могу ответить.
Аватара пользователя
anton44eg
Сообщения: 2716
Зарегистрирован: 2012.01.25, 13:37
Откуда: Киев

Re: помогите начинающему

Сообщение anton44eg »

issueDateStart описан в правилах валидации?
aznvsk
Сообщения: 47
Зарегистрирован: 2013.09.18, 13:05

Re: помогите начинающему

Сообщение aznvsk »

Добрый день.Встретил такой код.Они оба рабочие.
Yii::createWebApplication($configFile)->run
Yii::createWebApplication()->run();
В первом случае понятно.Передается файл конфигурации.
А как работает во втором случае.Здесь берется по умолчанию конфиг(тогда откуда) или вообще без файла конфигурации?
Заранее спасибо.
NEW_NAME
Сообщения: 216
Зарегистрирован: 2013.07.15, 09:52

Re: помогите начинающему

Сообщение NEW_NAME »

Какой-то конфиг все равно должен быть, не важно где он задан в файле, или может в самом методе.
А вообще, что спрашивать? В любой нормальной IDE удерживаешь ctrl и переходишь по функции run(), смотришь, что происходит, если без аргумента.
Закрыто