Zend Framework → Старт вместе с ZendFramework(продолженние)
Чтобы пути выглядели красиво воспльзуемся Zend_Route.
Переделаем public/users/register и public/users/login в public/register и public/login соответственно.
Отредактируем файл Bootstrap.php следующим образом:
Теперь все роуты мы можеи прописать в файле '../application/configs/routes.php'
Приступаем к контрллеру Tasks
Сделаем форму для доабления задачи application\models\Form\Addtask.php
Делаем модель application\models\Model\Tasks.php
Осталось самое малое — создать вид:
application\views\scripts\tasks\index.phtml
Наш маленький проект готов!
Жду ваших вопросов и дополнений!
PSархив с исходниками(zend нужно скачать отдельно)
Переделаем public/users/register и public/users/login в public/register и public/login соответственно.
Отредактируем файл Bootstrap.php следующим образом:
<?php class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { //эта ф-ия выполняется каждый раз при запусе Bootstrap //Bootstrap же загружает наше приложения,запуская контроллер и action public function run() { //Получаем доступ в FrontController'у $front = $this->getResource('FrontController'); //получаем... $router = $this->setRouter(); //... и устанавливаем наши роуты $front->setRouter($router); parent::run(); } public function setRouter () { require '../application/configs/routes.php'; if (!($router instanceof Zend_Controller_Router_Abstract)) { throw new Exception('Incorrect config file: routes'); } return $router; } }
Теперь все роуты мы можеи прописать в файле '../application/configs/routes.php'
<?php $router = new Zend_Controller_Router_Rewrite(); $router->addRoute('register',new Zend_Controller_Router_Route('register', array('controller'=>'users','action'=>'register'))); $router->addRoute('login',new Zend_Controller_Router_Route('login', array('controller'=>'users','action'=>'login')));
Приступаем к контрллеру Tasks
<?php //application/controllers/TaskController.php class TasksController extends Zend_Controller_Action { protected $auth = null; public function init() { $this->_redirector = $this->_helper->getHelper('Redirector'); $this->auth = Zend_Auth::getInstance(); } public function indexAction() { //к этому экшену имеет доступ только вошедший юзер if ($this->auth->hasIdentity()){ //форма для добавления задачи $form = new Form_Addtask(); if($this->_request->isPost()) { if($form->isValid($this->_getAllParams())) { $data = array( "user_id"=>$this->auth->getIdentity()->id, "task"=>$form->getValue('task'), ); $model = new Model_Tasks(); $model->insert($data); $this->_redirector->gotoSimple ( 'index', 'tasks' ); } } else{ //получем id пользователя $userId = $this->auth->getIdentity()->id; $model = new Model_Tasks(); //получаем задачи текущего пользователя $tasks = $model->getTasks($userId); //и передаем в вид $this->view->tasks = $tasks; } $this->view->form = $form; }//если пользователь не зашел - перенаправляем на вход else $this->_redirector->gotoSimple ( 'login', 'users' ); } public function delAction() { $id = $this->_getParam('id'); $model = new Model_Tasks(); $model->del($id); $this->_redirector->gotoSimple ( 'index', 'tasks' ); } }
Сделаем форму для доабления задачи application\models\Form\Addtask.php
<?php class Form_Addtask extends Zend_Form { public function init() { parent::init(); $task = new Zend_Form_Element_Text('task',array( 'required'=>true, 'label'=>'Добавить:', )); $submit = new Zend_Form_Element_Submit('submit',array( 'label'=>'Добавить')); $this->addElements(array($task,$submit)); } }
Делаем модель application\models\Model\Tasks.php
<?php class Model_Tasks extends Zend_Db_Table_Abstract { protected $_name = 'tasks'; public function getTasks($userId) { //получаем адаптер и делаем выборку $select = $this->getAdapter()->select() //из нашей таблицы ->from($this->_name) ->where("tasks.user_id = ?",$userId); //выполняем запрос и получаем массив обектов $stmt = $this->getAdapter()->query($select); $result = $stmt->fetchAll(Zend_Db::FETCH_OBJ); return $result; } public function del($id) { $where = $this->getAdapter()->quoteInto('id = ?', $id); $this->delete($where); } }
Осталось самое малое — создать вид:
application\views\scripts\tasks\index.phtml
<?php //выводим форму print $this->form; ?> <ul> <?php //выводим задачи if(!empty($this->tasks)): foreach ( $this->tasks as $task ):?> <li><?php print $task->task?> <a href="tasks/del/id/<?=$task->id?>">X</a></li> <?php endforeach;?> <?php endif;?> </ul>
Наш маленький проект готов!
Жду ваших вопросов и дополнений!
PS
- +8
- nuclear
- 12 июля 2009, 13:04
А хочется не просто отрывки кода, а именно проект, когда с каждой статьей мы будем его дорабатывать.
Мне легче все сделать на зенде, а часто повторяющиеся функции и классы вынести в свою библиотеку.
Так что жду предложений по разработке именно сайта =)
Внизу-справа open-life.org написано «Сайт работает на базе движка LiveStreet».
Он писал:
Вы написали, что:
Istergul снова пишет:
А open-life на ДВИЖКЕ, а Вы писали, что:
P.S. Я не имел ввиду, что Вы не знаете, что Опен-лайф на ЛивСтрите.
Но написать сайт и движок на котором работают это разные вещи.
Движок, в моем понимании, предполагает некую структуру которую можно было бы дорабатывать под конкретный проект.
Над проектом все еще думаю…