Кукбук
#1
Posted 06 February 2009 - 12:05 AM
#2
Posted 06 February 2009 - 01:01 AM
2) Если распаковываешь сразу на сервер с Linux, то прописать права доступа 755 для [куда_распаковал]/framework/yiic.php
Если под Windows (denwer), то корректируешь файл [куда_распаковал]\framework\yiic.bat:
находишь строчку, начинающуюся с
if "%PHP_COMMAND%" == ""
и дописываешь туда
set PHP_COMMAND=[диск_монтируемый_денвером]:usrlocalphp5php.exe
3) заходишь в каталок framework, запускаешь yiic webapp [относительный_путь_к_приложению],
например: yiic webapp ./../myapp1
А дальше начинается самое интересное...
Надо разбираться с контроллерами, отображениями, моделями и прочим согласно документации.
Вобщем, на сколько я понял - дальше наш путь лежит в [относительный_путь_к_приложению]/protected/, где все и лежит.
#3
Posted 06 February 2009 - 01:13 AM
А вообще, задаешь конретные вопросы - получаешь конкретные ответы.
#4
Posted 06 February 2009 - 09:10 AM
#5
Posted 06 February 2009 - 10:41 AM
#6
Posted 06 February 2009 - 12:36 PM
1. Почему именно model User? Т.е. имя User потому что у нас таблица так называется или мы используем какой-то шаблон фреймворка с именем Юзер?
2. Откуда фреймворку при создании модели известно, что нам нужны такие функции, как New User и Manage Users. Есть какие-то значения по умолчанию?
3. Почему они именно так называются? Т.е. где прописано
echo("...>New User<...")4. Почему class User это потомок CActiveRecord? Всегда ли создаваемый класс должен быть чьим-то потомком? Как быстро определить какой именно класс-предок нужно использовать дляя той или иной задачи?
5. Во view часто используется конструкция
CHtml::...
Что это за CHtml? Где он описан? Как я понимаю он подставляет значения - результат выполнения какой-то функции... Как мне увидеть все стандартные функции и их описания?..
6. Если я хочу пользователям дать ещё, например, категории, то достаточно ли мне будет просто изменить структуру в таблице БД и пересоздать модель или нужно будет как-то изменять и модель?
Вот вроде бы все, что могу спросить на вскидку...
П.С. Заранее извиняюсь, если какие-то вопросы покажутся тупыми или примитивными. Я раньше не работал с фреймворками и моделью МВЦ.
#7
Posted 06 February 2009 - 01:11 PM
Во-первых идем вот сюда и читаем, что такое модель MVC
http://ru.wikipedia....View-Controller
Теперь по вопросам:
- В МВЦ моель представляет собой данные. Данные хранятс в таблице. Для того чтобы их оттуда получить Yii предлагает ввести модель, которая обращается к данным. ОБращатьс можно и напрямуюу через SQL, но это другоая история.
Так вот, для того чтобы работать с данными, ты генерируешь модель, название класса которой соответствует названию таблицы. (А исходя из соглашений (http://www.yiiframew...sics.convention) - это слово с большой буквы)
- Эти действия он создает по умолчанию. Ты же даешь команду CRUD User. CRUD = Create Update Delete - Создание, обновление, удаление. Он и создает соответствующие методы для этих действий. Почитай насчет фильтров и методов для действий (Action) раздел http://www.yiiframew...sics.controller
[*]Все что касается оформления, в том числе и это находится в представлении (View). В каждом действии (по умолчанию выполняется действие list) последней строчкой обычнои идет
[/list]
$this->render('viewName', $params)- 'viewName' - это имя предстваления, которое будет отображаться
- Потому что модель, работающая с БД в Yii - потомок CActiveRecord. Active Record - это шаблон (паттерн) проектирования (design pattern)
(http://ru.wikipedia....%BD%D0%B8%D1%8F)
Active record - http://en.wikipedia...._record_pattern
Еще - http://habrahabr.ru/blogs/ruby/11525/
Не всегда создаваемій класс должен быть потомком, но в большинстве случаев удобно наследовать готовую функциональность. Ты же в большинстве случаев либо свое действие будешь создавать, либо модель, либо контроллер илиеще кучу всякого разного что есть в Yii. Конечно, тебя никто не ограничивай - пиши что хочешь. Но ознакомься сначала с тем что есть.
Чтобы обпределить, какой класс тебе нужен, надо посмотреть, что в Yii уже есть. Смотри доки по АПИ (http://www.yiiframework.com/doc/api/), читай ПОЛНОСТЬЮ Definitive Guide - зря что ли переводили
Ты ж не читал даже того что переведено до конца! В общем надо знать, что есть уже готовое. Не забудь посмотреть на существующие реасширения (http://www.yiiframew...com/extensions/)
- CHtml - это так называемый хелпер (helper), он содержит функции, которые используются при формировании хтмл. Допустим, с помощью одного вызова ты быдешь формировать список, автоматически запомниая выбранное значение. Все контролы, которые создает этот хелпер требуют первым параметром модель. Читай об этом в разделе "Working with forms" (пока еще не перевели). Там подробно рассказано, как создат модель с ней работать, делать проверки и т.п.
- Тебе будет достаточно просто добавить поле в БД. В модели не прописываются атрибуты таблицы, тамна основе определения таблицы прописываютс правила валидации этих атрибутов. Это не обязательно использовать, можно и закомментировать.
$params - это параметры, которые передаеются представлению. Это ассоциативный массив, ключи этого массива будут переменными в представлении. Посмотри как это сделано в примере, станет яснее.
Главная рекомендация - почитай гайд. Весь. Разберись как функционирует контроллер, компонент и т.п.
Разберись с паттернами, которые используются - Active Record, Controller, MVC. Ты должен понимать, как это работает, чтобы грамотно использовать.
Вперед!
#9
Posted 08 February 2009 - 08:37 AM
Фреймворк мне понравился но есть, на мой взгляд, недоработанные места, например не хватает некоторых вещей которые есть в Joomla:
JUri более функционален чем CUrlManager при работе с частями URL
JRequest полностью абстрагирует от работы с такими РНР массивам как $_GET, $_POST и т.п. К тому же он сразу производит очистку входящих данных с помощью JFilterInput
#10
Posted 08 February 2009 - 08:49 AM
Суть - хочу сделать ссылку на imdex.php?r=user (которое создается в first application) и чтобы она была видна только залогинившимся.
В test\protected\views\layouts\main.php
<?php $this->widget('application.components.MainMenu',array(
'items'=>array(
array('label'=>'Home', 'url'=>array('site/index')),
array('label'=>'Contact', 'url'=>array('site/contact')),
array('label'=>'Login', 'url'=>array('site/login'), 'visible'=>Yii::app()->user->isGuest),
array('label'=>'Logout', 'url'=>array('site/logout'), 'visible'=>!Yii::app()->user->isGuest),
),
)); ?>Изменяю на
<?php $this->widget('application.components.MainMenu',array(
'items'=>array(
array('label'=>'Home', 'url'=>array('site/index')),
array('label'=>'Contact', 'url'=>array('site/contact')),
array('label'=>'Login', 'url'=>array('site/login'), 'visible'=>Yii::app()->user->isGuest),
array('label'=>'Logout', 'url'=>array('site/logout'), 'visible'=>!Yii::app()->user->isGuest),
array('lable'=>'Manage Users', 'url'=>array('user'), 'visible'=>!Yii::app()->user->isGuest)
),
)); ?>Но
1. Нет надписи "Manage Users" в меню, вместо него просто поле-ссылка. Если на нее нажать, то я ухожу по ссылке r=site/user а не r=user.
Вопрос в том, чтобы
1. отображалась надпись в меню, правильно работала ссылка. И ещё вопрос как сделать, чтобы залогинившись с админскими правами admin\admin я попадал в r=user/admin? Т.е. isGuest это проверка залогинился или нет, а как проверить права? Если это checkAccess, то что вводить в качестве параметров?
#11
Posted 09 February 2009 - 08:06 AM
2) Надо внимательно смотреть на то, что уже написано. Вторым параметром идет массив, в котором первое - это путь (в формате котроллер/действие), а потом идет ключ-значение (переменная-значение), которые будут дописваться в строку адреса)
Надо написать просто array('user/list') и все будет работать.
3) Для проверки, админ ли он надо ввести роли. Читай вот здесь: http://www.yiiframew...ide/topics.auth
Можно, конечно, тупо проверить по логину, но этот вариант потом не может быть расширен.
Решить вопрос с разными линками просто так нельзя, надо формировать твой урл в контроллере, а в представление передавать просто переменую, в которой он будет. Вобщеговоря, эту логику можно разменстить и в представлении, но это противоречит концепции MVC.
#13
Posted 10 February 2009 - 10:56 AM
1) Добавление/удаление/редактирование/вывод записей (постраничный + навигация)
2) Календарь
3) Добавление/удаление/вывод комментариев
4) Авторизация
5) Привинтить FCKeditor (наверное, самое простое)
Думаю, нечто подобное для Ыыы было бы не только интересно, но и полезно.
#15
Posted 10 February 2009 - 12:33 PM
#16
Posted 10 February 2009 - 12:47 PM
Quote
Хм... что-то я его не нашел. Может, называется иначе?
Ссылочка, может есть?

Help












