Frage

Meine Controller-Aktion erfordert einen Parameter, aber ich kann nicht KO3 den Router passieren diesen Parameter in der Default-Route erhalten. Diese Art der Sache arbeitet mit anderen Routen. Hier ist ein Beispiel zu klären ...

In bootstrap.php ...

Route::set('default', '(<controller>(/<action>(/<the_required_param>)))')
 ->defaults(array(
  'controller' => 'DefaultController',
  'action'     => 'index',
  'the_required_param' => 'some_default_value',
 ));

In Controller Datei ...

class Controller_DefaultController extends Controller
{
    public function action_index($the_required_param)
    {
        echo 'value: ' . $the_required_param;
    }
}
War es hilfreich?

Lösung

Eine weitere Möglichkeit, die angegebene param zu bekommen wäre:

$this->request->param('the_required_param');

Sie sollten auch sicherstellen, dass Sie Ihre Routen, um zu definieren und sicherzustellen, dass es passt, was es soll.

Andere Tipps

Das Problem wurde durch eine gierige Strecke verursacht (würde jede uri passen), so dass der Router nie die Standardroute erreicht. Unten ist ein Beispiel für Referenz ...

// The parenthesis caused this route to match any uri
Route::set('route-4-params', '(<controller>/<action>/<p1>/<p2>/<p3>/<p4>)');

Route::set('default', '(<controller>(/<action>))')
    ->defaults(array(
        'controller' => 'default_controller',
        'action'     => 'index',
        'the_required_param'     => 'somevalue',
    ));
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top