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 с исходниками(zend нужно скачать отдельно)
- +8
- nuclear
- 12 июля 2009, 13:04
А хочется не просто отрывки кода, а именно проект, когда с каждой статьей мы будем его дорабатывать.
Мне легче все сделать на зенде, а часто повторяющиеся функции и классы вынести в свою библиотеку.
Так что жду предложений по разработке именно сайта =)
Внизу-справа open-life.org написано «Сайт работает на базе движка LiveStreet».
Он писал:
Вы написали, что:
Istergul снова пишет:
А open-life на ДВИЖКЕ, а Вы писали, что:
P.S. Я не имел ввиду, что Вы не знаете, что Опен-лайф на ЛивСтрите.
Но написать сайт и движок на котором работают это разные вещи.
Движок, в моем понимании, предполагает некую структуру которую можно было бы дорабатывать под конкретный проект.
Над проектом все еще думаю…