supuesto: controlador Producto Acción Agregar producto
La acción de agregar, editar, eliminar, la ejecutas en el mismo controlador ya que son acciones que están vinculadas a ese ítem.
La vista es una archivo aparte que contiene la presentación del modelo o sea es básicamente HTML y PHP JS CSS. Por ende se sugiere que este en un directorio de vistas bajo un directorio que tenga el nombre del controlador y que se llame agregar por ejemplo para que sea un nombre significativo. Luego tienes que crear una clase que maneje estos archivos que se encargue de buscarlos y cargarlos para visualizarlos.
Una manera podrías ser esta.
Código PHP:
Ver originalclass ProductoController
{
public function addAction()
{
//definicion de variables de la action, importar clases que puedas ocupar para solicitar informacion a la bd.
//procesar el request con los datos del form que enlazan al controlador y la accion.
//invocar el modelo que contiene la logica para guardar los datos en la base de datos
$model = new Model_Productos();
$model->agregarProducto($form->getValues() o $request->getPost() o $_POST);
//una vez que se agrego el producto redirecciono al usuario al index para mostrarle los productos que ha agregado
$this->redirect('/producto/'); //la acción por defecto podria ser index, solo si tuvieras un metodo que redireccione.
//cargar contenido el formulario
//esto ira colocado en el action del formulario de esta manera <form action='<?php echo $this->controller.'/'.$this->action;?>' />
$view = new View();
$view->action = 'add';
$view->controller='producto';
$view->form = $form; //esto si tuvieras una clase que te genere los formularios sino no lo agregas.
$view->setLayout('ruta/a/formulario/agregar/del/controlador/producto');
$view->render();//mostrar el formulario en la pagina.
}
}
Algo asi espero te pueda ayudar.