ФорумПрограммированиеPHP для идиотовPHP и ООП → Пишу блог, нужны советы

Пишу блог, нужны советы

  • Kikky

    Сообщения: 201 Репутация: N Группа: Кто попало

    Spritz 4 апреля 2011 г. 17:58

    Пишу блог на ZF в качестве своего первого проекта с помощью ООП, начал с пользовательской части и уже написал её, всё работает.
    Выделил 2 фронт контроллера: Public и Admin..правильно ли так делать в моем случае?
    Вот пример кода, оцените, может что-то подскажете что делаю не правильно, криво или нерационально..Спасибо.
    Это экшн, отвечающий за вывод полного содержания поста:
    public function postAction()
    {
    $posts = new Application_Model_DbTable_Posts();
    $id = $this->getRequest()->getParam('id');
    $this->view->post = $posts->getById($id);

    $categories = new Application_Model_DbTable_Categories();
    $this->view->categories = $categories->fetchAll();

    $comments = new Application_Model_DbTable_Comments();
    $this->view->comments = $comments->getByPostId($id);

    $form = new Application_Form_Comment($options = null);
    $form->submit->setLabel('Leave a comment');
    $this->view->form = $form;

    if($this->getRequest()->isPost())
    {
    $formData = $this->getRequest()->getPost();
    if($form->isValid($formData))
    {
    $name = $form->getValue('name');
    $email = $form->getValue('email');
    $content = $form->getValue('content');
    $comments->addComment($name, $email, $content, $id);
    $this->_helper->redirector->gotoUrl('/index/post/id/'.$id);;
    }

    }

    $this->view->title = $this->view->post->title;
    $this->view->headTitle($this->view->title);
    }
  • Flare

    Сообщения: 284 Репутация: N Группа: Кто попало

    Spritz 4 апреля 2011 г. 18:11, спустя 12 минут 54 секунды

    разделять на 2 фронт контроллера незачем, я у себя разделял в отдельный только для Install
    ну еще может быть писал$this->_request->getPost('title'); вместо $this->view->post->title;
  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz 4 апреля 2011 г. 18:14, спустя 3 минуты 14 секунд

    а у экшена разве нельзя просто getParam взять?
    if($form->isValid - а где else ?
  • Kikky

    Сообщения: 201 Репутация: N Группа: Кто попало

    Spritz 4 апреля 2011 г. 18:44, спустя 29 минут 24 секунды

    Flare, ясно, мне просто так удобнее показалось.

    kostyl, - можно, но я через getRequest всё написать решил..
    - если isValid будет false, то выскочит эксепшн.
  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz 4 апреля 2011 г. 18:51, спустя 7 минут 9 секунд

    Kikky, т.е если я не заполнил имя или мыло, я не пойму толи сайт не работает, толи одно из двух?
  • Kikky

    Сообщения: 201 Репутация: N Группа: Кто попало

    Spritz 4 апреля 2011 г. 18:56, спустя 4 минуты 58 секунд

    kostyl, ну вот я оставил пустыми имя и мыло, нажал submit и возле каждого из этих полей увидел 'Value is required and can't be empty'.
  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz 4 апреля 2011 г. 19:00, спустя 3 минуты 51 секунду

    так выскочит экцепшн и сработает валидатор - разные вещи %;)
  • mario

    Сообщения: 6067 Репутация: N Группа: Джедаи

    Spritz 4 апреля 2011 г. 19:01, спустя 1 минуту 29 секунд


    так выскочит экцепшн и сработает валидатор - разные вещи %;)
    выскочит эксепшн, который перехватит валидатор ;)
  • Kikky

    Сообщения: 201 Репутация: N Группа: Кто попало

    Spritz 4 апреля 2011 г. 19:08, спустя 6 минут 43 секунды

    Ну да, ну да))

    ..а если на этом же сайте делать магазин с каталогом, корзиной и т.п., то просто выделять для него ещё один контроллер и всё?
  • Flare

    Сообщения: 284 Репутация: N Группа: Кто попало

    Spritz 4 апреля 2011 г. 19:46, спустя 38 минут 8 секунд

    BasketController, CatalogController
  • Kikky

    Сообщения: 201 Репутация: N Группа: Кто попало

    Spritz 4 апреля 2011 г. 20:20, спустя 33 минуты 57 секунд

    Flare, Спасибо :)
  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz 4 апреля 2011 г. 20:38, спустя 17 минут 31 секунду

    Kikky, я думал у тебя выскочит эксцепшн, который ты не перехыватываешь…
  • truth4oll

    Сообщения: 463 Репутация: N Группа: Адекваты

    Spritz 4 апреля 2011 г. 20:42, спустя 4 минуты 4 секунды

    $posts->getById($id);

    в переменной с множественным числом будет лежать один единственный пост
    мелочь, но не приятно
  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz 4 апреля 2011 г. 21:04, спустя 22 минуты 1 секунду

    truth4oll,
    DbTable_Posts
  • Kikky

    Сообщения: 201 Репутация: N Группа: Кто попало

    Spritz 4 апреля 2011 г. 21:21, спустя 16 минут 54 секунды

    kostyl, ну да, это чтобы имя экземпляра соответствовало имени класса :)
    Спустя 142 сек.
    truth4oll, к тому же единственный пост будет лежать вот здесь $this->view->post.

Пожалуйста, авторизуйтесь, чтобы написать комментарий!