【问题标题】:How do i create a dynamic method in codeigniter?如何在 codeigniter 中创建动态方法?
【发布时间】:2016-05-13 11:26:45
【问题描述】:

我正在使用带有控制器 process.php 的 codeigniter 创建一个站点。在它的索引函数中,它从我的数据库中获取国家列表,并在我的视图中列出每个国家的超链接。我希望每个链接都有一个http://localhost/process/$countrycode 的超链接,其中 $countrycode 取决于被点击的国家/地区。

我如何创建一个方法来获得一个链接,例如: http://localhost/process/us 代表美国 http://localhost/process/ca 代表加拿大

该方法将根据国家/地区执行任务。

根据我对 codeigniter url 的理解,它是 example.com/class/function/ID 但我想要实现的不是在 URL 中包含该函数

【问题讨论】:

  • 你的问题不清楚可以说清楚
  • 我需要根据链接localhost/process/$countrycode选择的国家/地区创建一个方法
  • 你的意思是你想通过国家代码并根据国家代码获取记录我是对的。
  • 是的,但我想为该方法实现一个 URL,为 localhost/process/$countrycode,该方法根据国家/地区执行任务
  • 转到您的 route.php 文件并添加这样的路由 $route['add_route_name'] = 'controller/function'; 现在您的网址是 localhost/process/add_route_name

标签: php codeigniter


【解决方案1】:

像这样在你的文件 route.php 中添加新路由

$route['add_route_name'] = 'controller/function';

如果你想传递参数,像这样使用它

$route['add_route_name/(:any)'] = 'controller/function';

整数

$route['add_route_name/(:num)'] = 'controller/function';

在 codeigniter 3 中,将 /(.*) 用于 (:any),因为 (:any) 不适用于所有参数

例如如果你想像这样传递参数

http://localhost/projectname/12/books/etc/

在上面的 url 中,我传递了 3 个参数,这不是 (:any) 得到的,而是 /(.*) 得到的 3 个参数的数组。

像这样使用它。

$route['add_route_name/(.*)'] = 'controller/function';

【讨论】:

  • 如果您遇到任何问题,我会更新我的答案,请再次检查答案谢谢。
【解决方案2】:

据我从您的问题中了解到,您应该加载视图并将国家/地区传递到此视图为 $this->load->view('view_name',$array('countries'=>$countries_from_db)); 然后在您填写下拉列表时查看,例如,您将执行以下操作:

<?php foreach($countries as $count): <a href ='localhost/process/<?=$country_id?>'><?= $country_name?></a>}
<?php endforeach;?>

希望对你有帮助:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-08
    • 2019-09-09
    • 1970-01-01
    • 2020-07-17
    相关资源
    最近更新 更多