Ich habe 2 Controller account.php und address.php im selben Verzeichnis APP/Controller. Für den ersten Controller account.php, benutze ich Standard-Router für URI wie: account/create, account/login, account/logout ... Wenn ich den zweiten Controller schreibe, möchte ich den ganzen URI von address.php mit Account/Adresse starten /. Wie Sie hier sehen können, nehme ich die gleichen URI-Router-Übereinstimmungen mit Account-Controller.Kohana 3.2 Router für einen Controller mit einem Präfix URI gehört zu einem anderen Controller
Mein erster Ansatz:
// Add new address
Route::set('address', 'account/address/<action>')
->defaults(array(
'controller' => 'address',
'action' => 'index',
));
Meine Adresse Controller
public function before()
{
parent::before();
if (! Auth::instance()->logged_in())
{
// Redirect to a login page (or somewhere else).
$this->request->redirect('');
}
}
// nothing here
public function action_index()
{
$this->request->redirect('');
}
// create account
public function action_create()
{
// Create an instance of a model
$profile = new Model_Address();
// received the POST
if (isset($_POST) && Valid::not_empty($_POST))
{
// // validate the form
$post = Validation::factory($_POST)
->rule('firstname', 'not_empty')
->rule('lastname', 'not_empty')
->rule('address', 'not_empty')
->rule('phone', 'not_empty')
->rule('city', 'not_empty')
->rule('state', 'not_empty')
->rule('zip', 'not_empty')
->rule('country', 'not_empty')
->rule('primary_email_address', 'email');
// if the form is valid and the username and password matches
if ($post->check())
{
if($profile->create_profile($_POST))
{
$sent = kohana::message('profile', 'profile_created');
}
} else {
// validation failed, collect the errors
$errors = $post->errors('address');
}
}
// display
$this->template->title = 'Create new address';
$this->template->content = View::factory('address/create')
->bind('post', $post)
->bind('errors', $errors)
->bind('sent', $sent);
}
Es scheint in Ordnung zu sein, aber die Router Konto/Adresse/erstellen funktioniert nicht. Kohana gibt 404 Nachricht für diesen URI aus.
Weiß jemand, warum es passiert?
Awesome Mann, setzen es in erster Priorität macht den Trick. Und ja, Sie haben recht, die Validierung sollte stattdessen im Modell erfolgen, damit unser Controller sauber und lesbar aussieht. – lnguyen55