ФорумПрограммирование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.

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