Yii Framework Forum: Кукбук - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Кукбук Rate Topic: -----

#1 User is offline   Gordienko 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 25
  • Joined: 01-February 09
  • Location:Russia-63-Togliatti

Posted 06 February 2009 - 12:05 AM

Как на счет создать что-то типа русской cookbook? Я вот например прочитал основы, но пока не вкурил, с чего, собственно, начать-то) Раньше фреймворки не использовал, поэтому достаточно тяжело въезжаю...
0

#2 User is offline   anton4ept 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 16
  • Joined: 24-January 09

Posted 06 February 2009 - 01:01 AM

1) Скачать Ыыы отсюда http://www.yiiframework.com/download/ и распаковать в какую-либо папку.
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/, где все и лежит.


0

#3 User is offline   KJedi 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 381
  • Joined: 19-October 08
  • Location:Nikolaev, Ukraine (Europe)

Posted 06 February 2009 - 01:13 AM

Абсолютно верно. В Definitive guide написано как создать первое приложение, рассказано про доступ к БД, есть прмер создания формы с валидацией, всеми делами, можешь начать с нее.
А вообще, задаешь конретные вопросы - получаешь конкретные ответы.
0

#4 User is offline   Gordienko 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 25
  • Joined: 01-February 09
  • Location:Russia-63-Togliatti

Posted 06 February 2009 - 09:10 AM

про то как поставить настроить и запустить firstapp я разодрался как раз)) А вот что делать дальше - хз. Ну например мне нужно чтобы из базы табличка заполнялась... Как это сделать правильно с учетом МВЦ и используя классы йии?.. Сейчас попробую проштудировать Дефенетив...
0

#5 User is offline   KJedi 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 381
  • Joined: 19-October 08
  • Location:Nikolaev, Ukraine (Europe)

Posted 06 February 2009 - 10:41 AM

А ты почитай первый раздел. Он есть на русском. Просто создай базу, там таблицу. После этого через yiic shell - модель и CRUD - контроллер и представления для этой таблицы. Ну и дальше смотри как сделано, делай так же.
0

#6 User is offline   Gordienko 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 25
  • Joined: 01-February 09
  • Location:Russia-63-Togliatti

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. Если я хочу пользователям дать ещё, например, категории, то достаточно ли мне будет просто изменить структуру в таблице БД и пересоздать модель или нужно будет как-то изменять и модель?

Вот вроде бы все, что могу спросить на вскидку...

П.С. Заранее извиняюсь, если какие-то вопросы покажутся тупыми или примитивными. Я раньше не работал с фреймворками и моделью МВЦ.
0

#7 User is offline   KJedi 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 381
  • Joined: 19-October 08
  • Location:Nikolaev, Ukraine (Europe)

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' - это имя предстваления, которое будет отображаться

    $params - это параметры, которые передаеются представлению. Это ассоциативный массив, ключи этого массива будут переменными в представлении. Посмотри как это сделано в примере, станет яснее.


  • Потому что модель, работающая с БД в 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" (пока еще не перевели). Там подробно рассказано, как создат модель с ней работать, делать проверки и т.п.
  • Тебе будет достаточно просто добавить поле в БД. В модели не прописываются атрибуты таблицы, тамна основе определения таблицы прописываютс правила валидации этих атрибутов. Это не обязательно использовать, можно и закомментировать.


Главная рекомендация - почитай гайд. Весь. Разберись как функционирует контроллер, компонент и т.п.
Разберись с паттернами, которые используются - Active Record, Controller, MVC. Ты должен понимать, как это работает, чтобы грамотно использовать.

Вперед!
0

#8 User is offline   Gordienko 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 25
  • Joined: 01-February 09
  • Location:Russia-63-Togliatti

Posted 06 February 2009 - 01:34 PM

Спасибо. Буду штудировать доки)))
0

#9 User is offline   vic 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 1
  • Joined: 08-February 09
  • Location:Vinnitsa, Ukraine (Europe)

Posted 08 February 2009 - 08:37 AM

Меня интересует одна вещь, прочитал дефинитив гид и не увидел ни слова или примера каким образом реализовать фронтэнд и бэкэнд таким образом чтобы не дублировать код и не поднимать в фронтэнде код нужный только для бэкэнда. Грубо говоря как нормально и удобно реализовать админ часть при этом не утяжеляя клиентскую.

Фреймворк мне понравился но есть, на мой взгляд, недоработанные места, например не хватает некоторых вещей которые есть в Joomla:
JUri более функционален чем CUrlManager при работе с частями URL
JRequest полностью абстрагирует от работы с такими РНР массивам как $_GET, $_POST и т.п. К тому же он сразу производит очистку входящих данных с помощью JFilterInput


0

#10 User is offline   Gordienko 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 25
  • Joined: 01-February 09
  • Location:Russia-63-Togliatti

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, то что вводить в качестве параметров?
0

#11 User is offline   KJedi 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 381
  • Joined: 19-October 08
  • Location:Nikolaev, Ukraine (Europe)

Posted 09 February 2009 - 08:06 AM

1) Код надо писать внимательно. Текст не показывается просто потому что ошибка при написании ключа - lable вместо label
2) Надо внимательно смотреть на то, что уже написано. Вторым параметром идет массив, в котором первое - это путь (в формате котроллер/действие), а потом идет ключ-значение (переменная-значение), которые будут дописваться в строку адреса)
Надо написать просто array('user/list') и все будет работать.
3) Для проверки, админ ли он надо ввести роли. Читай вот здесь: http://www.yiiframew...ide/topics.auth
Можно, конечно, тупо проверить по логину, но этот вариант потом не может быть расширен.
Решить вопрос с разными линками просто так нельзя, надо формировать твой урл в контроллере, а в представление передавать просто переменую, в которой он будет. Вобщеговоря, эту логику можно разменстить и в представлении, но это противоречит концепции MVC.
0

#12 User is offline   Gordienko 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 25
  • Joined: 01-February 09
  • Location:Russia-63-Togliatti

Posted 09 February 2009 - 11:32 AM

спасибо. с 1 это я протупил))
0

#13 User is offline   anton4ept 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 16
  • Joined: 24-January 09

Posted 10 February 2009 - 10:56 AM

Я когда читал про CI, пользовался чьим-то блогом, в котором чел писал, как писать блог...
1) Добавление/удаление/редактирование/вывод записей (постраничный + навигация)
2) Календарь
3) Добавление/удаление/вывод комментариев
4) Авторизация
5) Привинтить FCKeditor (наверное, самое простое)
Думаю, нечто подобное для Ыыы было бы не только интересно, но и полезно.
0

#14 User is offline   KJedi 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 381
  • Joined: 19-October 08
  • Location:Nikolaev, Ukraine (Europe)

Posted 10 February 2009 - 12:06 PM

А тут неинтересно - пример блога уже есть :))
0

#15 User is offline   Gordienko 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 25
  • Joined: 01-February 09
  • Location:Russia-63-Togliatti

Posted 10 February 2009 - 12:33 PM

Кроме того в англоязычном (официальном) кукбуке описаны ряд примеров и постоянно добавляются новые.
0

#16 User is offline   anton4ept 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 16
  • Joined: 24-January 09

Posted 10 February 2009 - 12:47 PM

Quote

Кроме того в англоязычном (официальном) кукбуке описаны ряд примеров и постоянно добавляются новые.

Хм... что-то я его не нашел. Может, называется иначе?
Ссылочка, может есть?
0

#17 User is offline   KJedi 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 381
  • Joined: 19-October 08
  • Location:Nikolaev, Ukraine (Europe)

Posted 10 February 2009 - 12:48 PM

http://www.yiiframew...m/doc/cookbook/
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users