Codeigniter URI类我如何使用 - 连字符而不是_下划线?

rad*_*ken 8 php url codeigniter

我尝试使用 - 连字符创建一些控制器,模型和视图,但我总是得到PHP错误,所以我现在使用下划线.

所以我的网址是: http:// localhost:8888/ci/index.php/get_artist_discography/artist_name

我想是这样的: http:// localhost:8888/ci/index.php/get-artist-discography/artist-name

它可能有url - 在codeigniter连字符?

我的代码:

/控制器:

    <?php 
include (APPPATH.'/libraries/REST_Controller.php');
class get_artist_discography extends REST_Controller {

    function artist_name_get(){

    $data = new stdClass();
    $this->load->model('artist_model');
    $data = $this->artist_model->getAll();$this->response($data, 200);


    }

}
Run Code Online (Sandbox Code Playgroud)

/楷模:

  <?php 
class artist_model extends CI_Model {
    function getAll(){

        $q  = $this->db->query("SELECT artist_discography,artist_name from music");

        if($q->num_rows() > 0) {

            foreach ($q->result() as $row) {
                $data [] = $row;
            }
            return $data;
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

小智 15

如果你正在使用Codeigniter 3打开你的config/routes.php

$route['translate_uri_dashes'] = TRUE;
Run Code Online (Sandbox Code Playgroud)


Sha*_*lam 11

是的你可以.

通常,CI会生成类似于base_url/Controller_name/Method_name的url.

如您所知,控制器名称和方法名称不能包含" - "(连字符),因此您无法更改其名称.

你能做的是使用路由器显示正确的控制器与相应的URL.

就像你可以在config/routes.php上编写这段代码一样

$route['get-artist-discography/artist-name'] ='get_artist_discography/artist_name';
Run Code Online (Sandbox Code Playgroud)

如果您的链接是,这将执行您的get_artist_discography控制器和artist_name方法http://localhost:8888/ci/index.php/get-artist-discography/artist-name

您可以在CI文档中了解有关URI路由的更多信息