【问题标题】:Hide Controller name from url in codeigniter using routes使用路由在codeigniter中的url中隐藏控制器名称
【发布时间】:2019-02-28 12:22:04
【问题描述】:

我有一个这样的网址:

http://example.com/product/product_details/8

我希望 product_details 从 url 中隐藏,因为我使用了这个路由规则:

$route['default_controller'] = 'product';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
$route['product/(:any)'] =  'product/product_details/$1';

那么浏览器中出现的url就是

http://example.com/product/8

但问题是在同一个控制器中,我调用了其他控制器方法,例如。 public function addToCart(){ } 现在当我调用 http://example.com/product/addToCart 时,它不会被调用,直到我删除上面定义的路线。请帮助解决我的问题。

【问题讨论】:

    标签: codeigniter codeigniter-3


    【解决方案1】:

    您需要为此进行 ajax 查询。您需要删除 <form> 标签。像这样在按钮上添加 id:<button class="approve" type="submit">Approve</button>

    然后对于您的 ajax 查询,根据您的路线更改 url:

    <script type="text/javascript">
    $(document).ready(function(){
        $(".approve").click(function(){
            var $row = $(this).closest('tr');
            var $transactionCode = $row.find(".transactionCodeData").text();
    
            $.ajax({
                type: "POST",
                url: "<?php echo base_url(); ?>controller/method",
                data: { transactionKey: $transactionCode },
                success: function(data){
                    location.reload(); //to refresh the browser
                }
            });
        });
    });
    </script>
    

    【讨论】:

    • 谢谢。我已经实现了ajax查询,但是当我使用这个url时出现了问题:example.com/product/addToCart,我想知道我是否必须为产品控制器中的所有方法编写规则,因为我有很多。
    • @user3653474 有什么问题?
    • 我的产品控制器中有 15 个方法,如果我必须在 route.php 中定义每个方法路由,或者这也可以用一行代码完成。我不想在我的网址中显示控制器名称。
    • @user3653474 您可以在 routes.php $route['routename'] = 'controller/method; 中执行此操作,然后在成功查询后使用 redirect('routename') 调用此路由名称。您可以根据需要只使用一种路线。
    猜你喜欢
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-02
    • 2011-09-08
    • 2011-09-05
    • 1970-01-01
    • 2013-09-08
    相关资源
    最近更新 更多