Новичок!Осознание или правильный подход написания кода.
Новичок!Осознание или правильный подход написания кода.
Всем привет.
Если кому не сложно,плиз поясните мне вариант общения в yii допустим для такой микро задачи
На главной странице есть кнопка которая должна после нажатия запускать вычисления.
после завершения,сохранять в бд и выводить в табилцу к примеру результаты...
Вот очень интересен сам принцип,как это должно быть написано ПРАВИЛЬНО,чтоб не выдумывать велосипед...
Понятие php,mvc есть..просто читаю мануал...примеры... но как-то не пойму...везде все по разному пишут.
Извиняюсь за возможный очередной глупый вопрос от новичка!
Всем заранее спасибо!!!!
Если кому не сложно,плиз поясните мне вариант общения в yii допустим для такой микро задачи
На главной странице есть кнопка которая должна после нажатия запускать вычисления.
после завершения,сохранять в бд и выводить в табилцу к примеру результаты...
Вот очень интересен сам принцип,как это должно быть написано ПРАВИЛЬНО,чтоб не выдумывать велосипед...
Понятие php,mvc есть..просто читаю мануал...примеры... но как-то не пойму...везде все по разному пишут.
Извиняюсь за возможный очередной глупый вопрос от новичка!
Всем заранее спасибо!!!!
- sluchainiyznak
- Сообщения: 617
- Зарегистрирован: 2013.05.19, 17:51
- Откуда: ХМАО-Югра, г. Сургут
- Контактная информация:
Re: Новичок!Осознание или правильный подход написания кода.
тут я вижу 2 варианта рзвития событий:
1. Вариант с толстой моделью - логика происходит в модели
2. Вариант с толстым контроллером - логика происходит в экшне контроллера
з.ы.: моё мнение - 1 вариант
1. Вариант с толстой моделью - логика происходит в модели
2. Вариант с толстым контроллером - логика происходит в экшне контроллера
з.ы.: моё мнение - 1 вариант
Re: Новичок!Осознание или правильный подход написания кода.
sluchainiyznak писал(а):тут я вижу 2 варианта рзвития событий:
1. Вариант с толстой моделью - логика происходит в модели
2. Вариант с толстым контроллером - логика происходит в экшне контроллера
То есть при входе на хоум,весь скрипт основной должен быть через экшен?
Исправьте плиз меня если что:
1)Когда заходишь на индекс, будет вызываться экшен на (идндексном) контроллере...
2)Либо реализуем все в тут же,либо вызываем из модели весь функционал и выводим инфу на вывод..
- sluchainiyznak
- Сообщения: 617
- Зарегистрирован: 2013.05.19, 17:51
- Откуда: ХМАО-Югра, г. Сургут
- Контактная информация:
Re: Новичок!Осознание или правильный подход написания кода.
1. Есть контроллер с кучей экшнов
2. При переходе на экшн index(в вашем случае) есть 2 варианта развития событий:
2а. Вся логика проходит непосредственно в экшне
2б. Создается экземпляр модели, в модель передаются какие то данные, модель производит работу с этими данными и возвращает результат работы в экшн
3. Экшн отдает данные о результатах работы в представление
2. При переходе на экшн index(в вашем случае) есть 2 варианта развития событий:
2а. Вся логика проходит непосредственно в экшне
2б. Создается экземпляр модели, в модель передаются какие то данные, модель производит работу с этими данными и возвращает результат работы в экшн
3. Экшн отдает данные о результатах работы в представление
Re: Новичок!Осознание или правильный подход написания кода.
Спасибо большое, за ваш быстрый ответ!sluchainiyznak писал(а):1. Есть контроллер с кучей экшнов
2. При переходе на экшн index(в вашем случае) есть 2 варианта развития событий:
2а. Вся логика проходит непосредственно в экшне
2б. Создается экземпляр модели, в модель передаются какие то данные, модель производит работу с этими данными и возвращает результат работы в экшн
3. Экшн отдает данные о результатах работы в представление
Понял логику,что как.
Осталось реализовать,ха правда еще не придумал,как но то такое
Re: Новичок!Осознание или правильный подход написания кода.
sluchainiyznak писал(а):1. Есть контроллер с кучей экшнов
2. При переходе на экшн index(в вашем случае) есть 2 варианта развития событий:
2а. Вся логика проходит непосредственно в экшне
2б. Создается экземпляр модели, в модель передаются какие то данные, модель производит работу с этими данными и возвращает результат работы в экшн
3. Экшн отдает данные о результатах работы в представление
А вот такой вопрос.
Я создал через gii модель.. реализовал там часть работы.
Мне нужно сохранить данные в разные табилцы,как мне реализовать это?
При генерации шаблона указал одну таблицу и в модели только одна таблица,можно как-то добавить еще таблицу?
- sluchainiyznak
- Сообщения: 617
- Зарегистрирован: 2013.05.19, 17:51
- Откуда: ХМАО-Югра, г. Сургут
- Контактная информация:
Re: Новичок!Осознание или правильный подход написания кода.
sluchainiyznak писал(а):http://www.yiiframework.com/doc/guide/1 ... tabase.arr
Есть такой вопрос,при входе на индекс сайта нужно перекидывать на Login..
Так получилось сделать с другими контроллерами,а SiteController получается - На этой странице обнаружена циклическая переадресация -
Как обычно выводят из цикла подобную ситуацию?
- slavcodev
- Сообщения: 3134
- Зарегистрирован: 2009.04.02, 21:42
- Откуда: Valencia
- Контактная информация:
Re: Новичок!Осознание или правильный подход написания кода.
Настраивается фильтр AccessControl чтоб не пускал гостя на все действия кроме login
Жду Yii 3!
Re: Новичок!Осознание или правильный подход написания кода.
Я вроде это делаю,на SiteController добавилslavcodev писал(а):Настраивается фильтр AccessControl чтоб не пускал гостя на все действия кроме login
Код: Выделить всё
/**
* @return array action filters
*/
public function filters()
{
return array(
'accessControl', // perform access control for CRUD operations
);
}
/**
* Specifies the access control rules.
* This method is used by the 'accessControl' filter.
* @return array access control rules
*/
public function accessRules()
{
return array(
array('allow', // allow all users to perform 'index' and 'view' actions
'actions'=>array('index'),
'users'=>array('@'),
),
array('deny', // deny all users
'users'=>array('*'),
),
);
}
- slavcodev
- Сообщения: 3134
- Зарегистрирован: 2009.04.02, 21:42
- Откуда: Valencia
- Контактная информация:
Re: Новичок!Осознание или правильный подход написания кода.
login - у тебя закрыт, вот и зациклено, и разрешен index, хотя вроде ты написал что он должен быть закрыт.
Жду Yii 3!
Re: Новичок!Осознание или правильный подход написания кода.
Осознал,спасибо!slavcodev писал(а):login - у тебя закрыт, вот и зациклено, и разрешен index, хотя вроде ты написал что он должен быть закрыт.
Код: Выделить всё
public function accessRules()
{
return array(
array('allow', // allow for aut users to perform 'index' action
'actions'=>array('index'),
'users'=>array('@'),
),
array('allow', // allow all users to perform 'login' action
'actions'=>array('login'),
'users'=>array('*'),
),
array('deny', // deny all users
'users'=>array('*'),
),
);
}
Re: Новичок!Осознание или правильный подход написания кода.
slavcodev писал(а):login - у тебя закрыт, вот и зациклено, и разрешен index, хотя вроде ты написал что он должен быть закрыт.
Еще вопрос появился по ходу
Вот создал я форму регистрации юзеров..
Код: Выделить всё
class UserController extends Controller
{
public function actionIndex()
{
$this->render('index');
//'view',array('model'=>$this->loadModel($id),'current'=>$arraycurrentexp,
}
// Действие регистрации
public function actionSignup()
{
// Создать модель и указать ей, что используется сценарий регистрации
$user = new User(User::SCENARIO_SIGNUP);
// Если пришли данные для сохранения
if(isset($_POST['User']))
{
// Безопасное присваивание значений атрибутам
$user->attributes = $_POST['User'];
// Проверка данных
if($user->validate())
{
// Сохранить полученные данные
// false нужен для того, чтобы не производить повторную проверку
$user->save(false);
// Перенаправить на список зарегестрированных пользователей
$this->redirect($this->createUrl('user/'));
}
}
// Вывести форму
$this->render('form_signup', array('form'=>$user));
}
}
Если я нажал на регистрацию в менюхе
Так как логин,логаут находятся в SiteControllere,значит туда нужно и засовывать вызов регистрации..
Если возможно,простой пример,как это делается,плиз.
- slavcodev
- Сообщения: 3134
- Зарегистрирован: 2009.04.02, 21:42
- Откуда: Valencia
- Контактная информация:
Re: Новичок!Осознание или правильный подход написания кода.
Не понял вопрос. Твоя форма должна посылать запрос на это действие
<form action="signup">
<form action="signup">
Жду Yii 3!
- slavcodev
- Сообщения: 3134
- Зарегистрирован: 2009.04.02, 21:42
- Откуда: Valencia
- Контактная информация:
Re: Новичок!Осознание или правильный подход написания кода.
Пробегись (или изучи) демо-блог, там работа с формами рассматривается. Прочти рецепты. Такие вопросы должны отпасть.
Жду Yii 3!
Re: Новичок!Осознание или правильный подход написания кода.
Спасибо,разобрался.slavcodev писал(а):Пробегись (или изучи) демо-блог, там работа с формами рассматривается. Прочти рецепты. Такие вопросы должны отпасть.
А вот вопрос появился по поводу отправки письма об успешной регистрации пользователя..есть какой-то простой образец..?
по мимо этого: http://www.yiiframework.com/extension/email/
- TranceSmile
- Сообщения: 562
- Зарегистрирован: 2011.06.27, 19:04
- Откуда: Украина
- Контактная информация:
Re: Новичок!Осознание или правильный подход написания кода.
slavcodev писал(а):Пробегись (или изучи) демо-блог, там работа с формами рассматривается. Прочти рецепты. Такие вопросы должны отпасть.
У меня такой вопрос,я хочу вывести список значений в дроп даун лист с двух или трех полей,как это можно реализовать вообще?
Получилось только одно поле выводить
Код: Выделить всё
<td><?php $list = CHtml::listData($flights,
'idflights','departure');
echo CHtml::dropDownList('departure','Выберите от куда', $list); ?>
Re: Новичок!Осознание или правильный подход написания кода.
Такой вопрос.. Каким образом выводить данные из другой таблицы через _view
Есть две таблицы,которые нужно вывести совмещенные данные вместе.
С одной вывел,а не пойму,как достать данные из _view
class Orders и Passenger
Релейшн прописал
Видит атрибуты...а как добраться до значений не знаю
Есть две таблицы,которые нужно вывести совмещенные данные вместе.
С одной вывел,а не пойму,как достать данные из _view
class Orders и Passenger
Код: Выделить всё
/* @var $this OrdersController */
/* @var $data Orders */
<b><?php echo CHtml::encode($data->getAttributeLabel('seat')); ?>:</b>
<?php echo CHtml::encode($data->seat); ?>// Здесь Orders данные видны
<br />
<b><?php echo CHtml::encode($data->getAttributeLabel('passenger.telephone')); ?>:</b>
<?php //echo CHtml::encode($data->lephone); ?> // Здесь нужен результат с Passenger
<br />
Код: Выделить всё
public function relations()
{
// NOTE: you may need to adjust the relation name and the related
// class name for the relations automatically generated below.
return array('passenger'=>array(self::BELONGS_TO, 'Passenger', 'id_passenger'),
);
}
-
- Сообщения: 1268
- Зарегистрирован: 2013.07.17, 17:37
Re: Новичок!Осознание или правильный подход написания кода.
$data->passenger->lephone