Cách thay đổi URL trong CodeIgniter

Sử dụng thư viện ngôn ngữ codeigniter với phần mở rộng lớp này. Mã định danh ngôn ngữ URI. Tôi cũng sử dụng bộ điều khiển này để chuyển đổi ngôn ngữ

class LangSwitch extends CI_Controller {

public function __construct[] {
    parent::__construct[];      
}
public function switchLanguage[$language = ""] {

    $this->load->library['user_agent'];
    $referrer = $this->agent->referrer[];

    $l = substr[$referrer, strlen[base_url[]]];

    if[isset[$referrer]]{
        preg_match['/\/[.+]$/i',$l,$match];
        $redirect_url;
        if [empty[$match]] {
            redirect[base_url[].$language ,'refresh'];
        }
        else{
            $redirect_url = base_url[].$language.$match[1];
        }
        redirect[$redirect,'refresh'];
    }else{
        redirect[base_url[],'refresh'];
    }
  }
}

Hy vọng nó giúp

Nếu nó không được đặt, thì CodeIgniter sẽ cố gắng đoán giao thức và đường dẫn đến bản cài đặt của bạn, nhưng do lo ngại về bảo mật, tên máy chủ sẽ được đặt thành $_SERVER['SERVER_ADDR'] nếu có hoặc localhost nếu không. Cơ chế tự động phát hiện chỉ tồn tại để thuận tiện trong quá trình phát triển và KHÔNG ĐƯỢC sử dụng trong sản xuất

$config['base_url'] = '';

Nó nên được nộp như

$config['base_url'] = '//localhost/projectname/';

$config['base_url'] = '//www.example.com/';

Luôn luôn tốt để sử dụng / ở cuối base_url

Khi bạn không đặt URL cơ sở của mình, bạn có thể gặp phải một số lỗi trong đó bạn không thể tải CSS, hình ảnh và các mục nội dung khác của mình. Và bạn cũng có thể gặp sự cố khi gửi biểu mẫu vì một số người dùng đã gặp phải

Các tuyến chịu trách nhiệm trả lời các yêu cầu URL. Định tuyến khớp URL với các tuyến được xác định trước. Nếu không tìm thấy tuyến đường phù hợp thì CodeIgniter ném một trang không tìm thấy một ngoại lệ

Các tuyến trong CodeIgniter được xác định bằng công thức bên dưới

example.com/Controller/Method/Parameter/

NƠI ĐÂY,

  • Bộ điều khiển - được ánh xạ tới tên bộ điều khiển sẽ phản hồi URL
  • Phương thức - được ánh xạ tới phương thức trong bộ điều khiển sẽ đáp ứng yêu cầu URI
  • Tham số - phần này là tùy chọn

Trong hướng dẫn CodeIgniter Routes này, bạn sẽ học

  • CodeIgniter Routes là gì?
  • Ví dụ về các tuyến CodeIgniter
  • Tạo định tuyến URL cho ứng dụng
  • Lượt xem CodeIgniter

Ví dụ về các tuyến CodeIgniter

Bây giờ chúng ta hãy xem định tuyến URL thực tế trong ví dụ CodeIgniter

Xem xét URL sau
//localhost:3000/contacts/edit/1

NƠI ĐÂY,

  • Tên của bộ điều khiển phản hồi URL trên là “liên hệ”
  • Phương thức trong lớp điều khiển Danh bạ là "chỉnh sửa"
  • Phương thức chỉnh sửa chấp nhận một tham số. Trong trường hợp ví dụ của chúng tôi, giá trị “1” được truyền cho phương thức

Đây là một nền tảng ngắn gọn về những gì chúng tôi dự định làm

  • Định tuyến - định tuyến chịu trách nhiệm đáp ứng các yêu cầu URL. Định tuyến CodeIgniter khớp URL với các tuyến được xác định trước. Nếu không tìm thấy route match thì CodeIgniter ném ra một trang không tìm thấy ngoại lệ
  • Bộ điều khiển – các tuyến đường được liên kết với bộ điều khiển. Bộ điều khiển dán các mô hình và khung nhìn lại với nhau. Yêu cầu dữ liệu/logic nghiệp vụ từ mô hình và trả về kết quả thông qua trình bày dạng xem. Khi một URL đã được so khớp với một Tuyến trong CodeIgniter, nó sẽ được chuyển tiếp tới một chức năng công khai của bộ điều khiển tương tác với nguồn dữ liệu, logic nghiệp vụ và trả về dạng xem hiển thị kết quả
  • Lượt xem – lượt xem chịu trách nhiệm trình bày. Chế độ xem thường là sự kết hợp của HTML, CSS và JavaScript. Đây là phần có nhiệm vụ hiển thị trang web cho người dùng. Thông thường, dữ liệu hiển thị thường được lấy từ cơ sở dữ liệu hoặc bất kỳ nguồn dữ liệu có sẵn nào khác

Để tìm hiểu cách triển khai các bộ định tuyến trong một dự án trong thế giới thực, chúng tôi sẽ giả định rằng chúng tôi đang tạo một ứng dụng để quản lý chi tiết liên hệ. Bảng sau đây hiển thị các URL sẽ hoạt động với

S/NURLRouteControllerMethod1/$route[‘default_controller’]Welcomeindex2/contacts$route[‘contacts’]Contactsindex3/contacts/create$route[‘create’]Contactscreate4/contacts/edit/id$route[‘edit/. id’]Contactsedit5/contacts/update/id$route[‘update/. id’]Contactsupdate6/contacts/delete/id$route[‘delete/. id’]Xóa danh bạ

Chúng tôi sẽ tạo các tuyến của ứng dụng của chúng tôi dựa trên bảng trên. Chúng tôi đã xác định các URL, tuyến đường CodeIgniter và ánh xạ chúng tới các tên phương thức và bộ điều khiển tương ứng

Tạo định tuyến URL cho ứng dụng

Hãy tạo Định tuyến URL CodeIgniter cho dự án hướng dẫn của chúng ta

Mở ứng dụng/cấu hình/tuyến. php

Sửa đổi các tuyến đường để phù hợp với những điều sau đây

$route['default_controller'] = 'welcome';
$route['contacts'] = 'contacts';
$route['create'] = 'contacts/create';
$route['edit/:id'] = 'contacts/edit';
$route['update/:id'] = 'contacts/update';
$route['delete/:id'] = 'contacts/delete';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;

NƠI ĐÂY,

  • $route[‘default_controller’] = ‘chào mừng bạn’;
  • $route[‘liên hệ’] = ‘liên hệ’;
  • $route[‘create’] = ‘liên hệ/tạo’;
  • $route[‘sửa/. id'] = 'liên hệ/chỉnh sửa';
  • $route['cập nhật/. id'] = 'liên hệ/cập nhật';
  • $route['xóa/. id'] = 'danh bạ/xóa';

Bảng sau hiển thị các URL tương ứng bắt nguồn từ các tuyến được xác định ở trên

S/NRRouteURL tương ứng1$route[‘default_controller’] = ‘welcome’;http. //máy chủ cục bộ. 30002$route['liên hệ'] = 'liên hệ';http. //máy chủ cục bộ. 3000/contacts3$route[‘create’] = ‘contacts/create’;http. //máy chủ cục bộ. 3000/contacts/create4$route[‘sửa/. id'] = 'liên hệ/chỉnh sửa';http. //máy chủ cục bộ. 3000/liên hệ/chỉnh sửa/15$tuyến đường['cập nhật/. id'] = 'danh bạ/cập nhật';http. //máy chủ cục bộ. 3000/liên hệ/cập nhật/16$route[‘delete/. id'] = 'danh bạ/xóa';http. //máy chủ cục bộ. 3000/danh bạ/xóa/1

Bây giờ chúng ta đã bao phủ các tuyến đường, hãy tạo bộ điều khiển Danh bạ sẽ phản hồi các hành động được chỉ định trong các tuyến đường

Tạo tệp Tuyến đường mới trong CodeIgniter dưới dạng Danh bạ. php trong ứng dụng/bộ điều khiển/Danh bạ. php

Thêm đoạn mã sau

Chủ Đề