Меня интересует обработка HTML-форм в MVC. В данный момент я использую Kohana, но вопрос носит общий характер. Поэтому я хочу собрать мнения и рекомендации по двум подходам:
Сохранение обработки в действии, которая отображает форму:
class Controler_Sample
{
public function action_one
{
$view = View::factory('form');
if($_POST)
{
$model = new Model_SomeModel;
//validate
try($model->values($_POST)->save();
{
//on success go to action with success logic using post redirect get pattern
$this->request->redirect('Sample/sucess')
}
catch(Exception $e)
{
//on fail attach error message to form view
$view->set('errors',$e->errors);
}
}
echo $view;
}
}
Сохранение обработки формы в другом действии, кроме этого, отображающего ее
class Controler_Sample
{
public function action_one
{
//display form, with errors if there are anny passed in GET
echo View::factory('form')
set->('errors',$this->request->get('errors',FALSE);
}
public function action_two
{
if($_POST)
{
$model = new Model_SomeModel;
//validate
try($model->values($_POST)->save();
{
//on success go to action two using post redirect get pattern
$this->request->redirect('Sample/success')
}
catch(Exception $e)
{
//on fail create new hmvc call to action_one with errors in GET
//im don't remember the syntax, let's assume it's here ok :D
}
}
}
}
Другая архитектура, которую вы предпочитаете?
Я вижу, что первый подход быстрее печатать и обрабатывать, но второй подход более пригоден для повторного использования - action_two, который обрабатывает форму, может вызываться из форм или ajax в других местах APP.
Что вы думаете?