Model, когда использовать?
-
- Сообщения: 225
- Зарегистрирован: 2013.03.10, 12:47
Model, когда использовать?
Собственно что делает данный метод, возвращает обьект модели(что то вроди Singleton)?
Когда использовать его, а когда создавать новый обьект(new)?
Когда использовать его, а когда создавать новый обьект(new)?
- flashimage
- Сообщения: 1517
- Зарегистрирован: 2011.01.23, 12:43
Re: Model, когда использовать?
Если вы хоть раз загляните в свои модели, то увидите там код, сгенерированный gii
Код: Выделить всё
/* Returns the static model of the specified AR class.
* @param string $className active record class name.
* @return Document the static model class
*/
public static function model($className=__CLASS__)
{
return parent::model($className);
}
Бранчи это гомеоморфические эндофункторы, которые мапятся на субманифолды пространства Гилберта.
-
- Сообщения: 225
- Зарегистрирован: 2013.03.10, 12:47
Re: Model, когда использовать?
Так вот когда использовать ::model, а когда создавать новый обьект?flashimage писал(а):Если вы хоть раз загляните в свои модели, то увидите там код, сгенерированный giiКод: Выделить всё
/* Returns the static model of the specified AR class. * @param string $className active record class name. * @return Document the static model class */ public static function model($className=__CLASS__) { return parent::model($className); }
- lancecoder
- Сообщения: 2532
- Зарегистрирован: 2012.06.26, 17:16
Re: Model, когда использовать?
когда надо создавать новый объект - надо создавать новый объект
когда надо использовать существующую модель - надо использовать ::model
когда надо использовать существующую модель - надо использовать ::model
-
- Сообщения: 225
- Зарегистрирован: 2013.03.10, 12:47
Re: Model, когда использовать?
Зачем?Если виду можно передать обьект модели.lancecoder писал(а):когда надо создавать новый объект - надо создавать новый объект
когда надо использовать существующую модель - надо использовать ::model
После CI писать в Yii очень необычно, вот еще какие вопросы:
1)Чем отличается preload от import в конфигах?
2)Насколько я понял,для того что бы подгрузить класс, надо создать метод с названием его типа, например 'filters'.Где можно почитать про те самые типы?
Re: Model, когда использовать?
preload вызывает метод init() при инициализации приложения, иначе этот метод будет вызван лениво (при первом обращении к компоненту)
-
- Сообщения: 225
- Зарегистрирован: 2013.03.10, 12:47
Re: Model, когда использовать?
Спасибо, еще вопросики:
1)Yii::app()->request->baseUrl пуст(index.php находится в корневой папке), данное свойство можно вообще не использовать, либо при загрузке на реальный сервер могут возникнуть проблемы?
2)Я создал приложение через yiic, удалил все контроллеры,виды,модели, все поменял на свое, и сразу при загрузке сайта вылетает:
-Естественно контроллера site и экшна error у меня нет, как это можно переопределить?
-Контроллер index есть, и экшн index тоже, но yii выдает CHttpException, как поменять defaultController и defaultAction?
-Как создавать совершенно пустое приложение, чтобы дальше такого не было?
3)В основном layout-е есть блок, где должно отображаться 5 последних новостей, правильнее создать модель для этой таблицы и метод для получения, и вызывать через News::model()->getNews() или как то иначе?
Заранее спасибо.
1)Yii::app()->request->baseUrl пуст(index.php находится в корневой папке), данное свойство можно вообще не использовать, либо при загрузке на реальный сервер могут возникнуть проблемы?
2)Я создал приложение через yiic, удалил все контроллеры,виды,модели, все поменял на свое, и сразу при загрузке сайта вылетает:
Код: Выделить всё
Невозможно обработать запрос "site/error"
-Контроллер index есть, и экшн index тоже, но yii выдает CHttpException, как поменять defaultController и defaultAction?
-Как создавать совершенно пустое приложение, чтобы дальше такого не было?
3)В основном layout-е есть блок, где должно отображаться 5 последних новостей, правильнее создать модель для этой таблицы и метод для получения, и вызывать через News::model()->getNews() или как то иначе?
Заранее спасибо.
Re: Model, когда использовать?
1. если проект будет в папке(типа http://example.com/folder), то без использования этого параметра будут проблемы
2. в конфиге нужно прописать errorAction для компонента errorHandler
3. создать модель и сделать виджет LastNews, в котором уже и выводить эти новости
2. в конфиге нужно прописать errorAction для компонента errorHandler
3. создать модель и сделать виджет LastNews, в котором уже и выводить эти новости
-
- Сообщения: 225
- Зарегистрирован: 2013.03.10, 12:47
Re: Model, когда использовать?
Аж виждет для одного метода?rak писал(а):1. если проект будет в папке(типа http://example.com/folder), то без использования этого параметра будут проблемы
2. в конфиге нужно прописать errorAction для компонента errorHandler
3. создать модель и сделать виджет LastNews, в котором уже и выводить эти новости
Re: Model, когда использовать?
я тоже обычно выношу такие вещи в виджеты
Re: Model, когда использовать?
зато код читабельнееdestin9000 писал(а): Аж виждет для одного метода?
-
- Сообщения: 225
- Зарегистрирован: 2013.03.10, 12:47
Re: Model, когда использовать?
Ок, виджет сделаю..
Тогда другой вопрос, справа есть юзерпанель, если юзер залогинен то отображается она, если нет - то форма авторизации.
Это как сделать?
Тогда другой вопрос, справа есть юзерпанель, если юзер залогинен то отображается она, если нет - то форма авторизации.
Это как сделать?
Re: Model, когда использовать?
Код: Выделить всё
<?php if(Yii::app()->user->isGuest): ?>
...
<?php else: ?>
...
<?php endif; ?>
-
- Сообщения: 225
- Зарегистрирован: 2013.03.10, 12:47
Re: Model, когда использовать?
Это понятно, я думал тоже через виджет, спасибо.rak писал(а):Код: Выделить всё
<?php if(Yii::app()->user->isGuest): ?> ... <?php else: ?> ... <?php endif; ?>
Написал виджет:
Код: Выделить всё
class NewsWidget extends CWidget
{
public function run()
{
$news = News::model()->getLastNews();
$this->render('news',array('news'=>$news));
}
}
Что еще можно добавить/поправить?
Как кстати правильно виджеты называть?
Re: Model, когда использовать?
как и остальные классы, главное чтоб понятно было, что это такое и что делает
-
- Сообщения: 225
- Зарегистрирован: 2013.03.10, 12:47
Re: Model, когда использовать?
Всмысле название файла и класса)rak писал(а):как и остальные классы, главное чтоб понятно было, что это такое и что делает
Код: Выделить всё
CHttpException
Невозможно обработать запрос "site/error". (D:\WebServer\domains\somedomain\framework\web\CWebApplication.php:286)
#0 D:\WebServer\domains\somedomain\framework\base\CErrorHandler.php(331): CWebApplication->runController('site/error')
#1 D:\WebServer\domains\somedomain\framework\base\CErrorHandler.php(204): CErrorHandler->render('error', Array)
#2 D:\WebServer\domains\somedomain\framework\base\CErrorHandler.php(129): CErrorHandler->handleException(Object(CHttpException))
#3 D:\WebServer\domains\somedomain\framework\base\CApplication.php(720): CErrorHandler->handle(Object(CExceptionEvent))
#4 [internal function]: CApplication->handleException(Object(CHttpException))
#5 {main}
Код: Выделить всё
'errorHandler'=>array(
'errorAction'=>'error/error'
),
Для виджета мне надо функцию, которая будет обрезать текст до определенного количества символов, если длина меньше=>не обрезать.
Где ее написать, в самом виджете?
-
- Сообщения: 225
- Зарегистрирован: 2013.03.10, 12:47
Re: Model, когда использовать?
И последний вопрос:
Зачем нужны классы CDataProvider и CActiveDataProvider?Где можно про них почитать(на русском)?
Зачем нужны классы CDataProvider и CActiveDataProvider?Где можно про них почитать(на русском)?
Re: Model, когда использовать?
CDataProvider (и его потомки) используются в гридах (CGridView) и прочих "продвинутых" виджетах
- flashimage
- Сообщения: 1517
- Зарегистрирован: 2011.01.23, 12:43
Re: Model, когда использовать?
почитать можно тут http://www.simplecoding.org/izmeneniya- ... vider.html
Бранчи это гомеоморфические эндофункторы, которые мапятся на субманифолды пространства Гилберта.
-
- Сообщения: 225
- Зарегистрирован: 2013.03.10, 12:47
Re: Model, когда использовать?
Спасибо, я читал, но так и не понял для чего он..
Чем он отличается от CActiveRecord?
Прочитал про RBAC, понравилось:
Только вот куда данный код пихать - не понял.Или yii автоматически читает все файлы из папки config и надо просто создать там файл?
Чем он отличается от CActiveRecord?
Прочитал про RBAC, понравилось:
Код: Выделить всё
$bizRule='return Yii::app()->user->name === "admin";';
$auth->createRole('admin', 'администратор', $bizRule);
$bizRule='return Yii::app()->user->isGuest;';
$auth->createRole('guest', 'гость', $bizRule);
Последний раз редактировалось destin9000 2013.03.12, 13:58, всего редактировалось 1 раз.