带控制器的智能路由

时间:2018-12-01 01:11:37

标签: laravel laravel-5 routing laravel-routing laravel-5.7

有一种方法可以使用控制器的方法自动设置路由?

示例:我有一个具有'home'或'index','about'和'contact'方法的PagesController。我可以为每个方法设置路由而无需明确输入吗?

类似

    <AnchorPane layoutX="596.0" layoutY="338.0" prefHeight="284.0" prefWidth="461.0">
         <children>
            <TableView fx:id="tableview" layoutX="-3.0" layoutY="-1.0" prefHeight="243.0" prefWidth="315.0">
              <columns>
                <TableColumn prefWidth="75.0" text="Name" />
                <TableColumn prefWidth="75.0" text="Rating" />
                  <TableColumn prefWidth="75.0" text="Restaurant" />
              </columns>
            </TableView>
            <TextField fx:id="txtFieldName" layoutX="39.0" layoutY="253.0" prefHeight="12.0" prefWidth="83.0" promptText="Name" />
            <TextField fx:id="txtFieldRating" layoutX="173.0" layoutY="249.0" prefHeight="12.0" prefWidth="83.0" promptText="Rating" />
            <TextField fx:id="txtFieldRestaurant" layoutX="317.0" layoutY="239.0" prefHeight="12.0" prefWidth="83.0" promptText="Restaurant" />
            <Button layoutX="341.0" layoutY="58.0" mnemonicParsing="false" onAction="#buttonSubmit" text="Submit" />
         </children>
      </AnchorPane>
   </children>
</AnchorPane>

Route::?('PagesController');

是的,我是laravel的新手...

1 个答案:

答案 0 :(得分:0)

否,不可能。假设您使用标准的RESTful方法,例如索引,创建,编辑,存储,更新和销毁,那么可以,您只需编写:

Route::resource('cars', 'CarController');

您将为汽车列表创建路线,进行编辑,创建等路线

Resource Controller文档部分对此进行了说明。

但是请记住,您始终可以创建会“捕获”所有其他URL的路由,例如,您可以这样创建路由:

Route::get('{page?}', 'PagesController@handle')->where('page', '.+')

此路由应定义为所有其他路由的最后一条。

现在您可以在此控制器中定义句柄方法,如下所示:

public function handle($page = 'home') 
{
    // here you can put any logic you want, for example:

   if (method_exists($this, $page)) {
       return $this->$page();
   }

   abort(404);
}

,现在您可以定义与您的网址匹配的方法,例如:

public function home()
{
   // return some response here
}

public function index()
{
  // return some response here
}

这样,您应该能够实现所需的功能,而无需在路由文件中手动定义多个路由。

相关问题