【问题标题】:Calling routes from a view in CodeIgniter从 CodeIgniter 中的视图调用路由
【发布时间】:2019-06-12 15:33:36
【问题描述】:

我想避免在视图中硬编码网址。

例子:

//view
echo form_open( base_url( 'users/add' ) );...

//routes
$route['users/add']['post'] = 'UserController/insert';

这样每次我更新路由中的url时,我都必须去查看,找到表单并手动更新视图中的url,这可能非常费力。

在 laravel 中你可以这样命名一个路由:

//routes.php
$route->post('users/add', 'UserController@insert')->name('insertUser');

并使用辅助函数直接从视图中调用它

//view
form_open( routes('insertUser') );...

这样视图中的 url 会自动更新,省去手动更新的麻烦。

我想知道 CodeIgniter 中是否有类似的东西。

提前致谢!

【问题讨论】:

    标签: php codeigniter url view routing


    【解决方案1】:

    laravel 实现它的方式是简单地为路由命名,您可以使用 $config[] 在 codeingniter 中自己完成,只需在您的 app/config 中创建一个新的配置文件并将您的路由命名为您在 laravel 中是这样的:

    $config['insertUser'] = 'users/add';
    

    然后像这样在控制器中加载该配置文件:

    $this->load->config('your_config_file_name');
    

    然后在您看来,您可以像这样使用该值:

    form_open( base_url( $this->config->item('insertUser') ) );
    

    【讨论】:

      【解决方案2】:

      你可以先在配置文件中设置一个路由器配置项(默认文件位于application/config/config.php),例如:

      $config['routes']['insertUser'] = 'users/add';
      

      然后将上面的配置提供到 routes.php 上的标准路由项中,

      $route[$this->config->item('routes')['insertUser']]['post'] = 'UserController/insert';
      

      然后在视图上你可以像这样动态调用它:

      echo form_open( base_url( $this->config->item('routes')['insertUser'] ) );
      

      因此,每次如果您必须更改路线,您只需在 config.php 上更改即可。

      【讨论】:

        猜你喜欢
        • 2017-07-28
        • 2011-02-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-30
        • 1970-01-01
        • 2020-01-21
        • 2012-09-08
        相关资源
        最近更新 更多