ThinkPHP is a lightweight PHP framework based on the MVC architecture. Routing configuration serves as a crucial link between URLs and controller logic. Properly configuring routes not only improves project maintainability but also makes URLs more concise and semantic. This article explores ThinkPHP's routing system from three aspects: core concepts, configuration methods, and practical examples.
In ThinkPHP, routing defines the mapping relationship between URLs and controller actions. By customizing routing rules, developers can freely define access paths, making project structures clearer and logic more flexible.
ThinkPHP provides two main types of routing configurations: basic routing and full routing.
Basic routing is the simplest approach, allowing developers to define URL-to-controller mappings directly in the configuration file. For example:
// Default routing configuration
'URL_ROUTER_ON' => true, // Enable routing
'URL_ROUTE_RULES' => array(
'home' => 'Index/index', // Map /home to the index method of the Index controller
'article' => 'Blog/read', // Map /article to the read method of the Blog controller
),
Full routing offers greater flexibility, supporting wildcards and regular expressions for more precise matching. For example:
// Full routing configuration
'URL_ROUTER_ON' => true, // Enable routing
'URL_ROUTE_RULES' => array(
'admin/:controller/:action' => 'admin/:1/:2', // Map to the corresponding controller and method in the admin module
),
Let’s take a simple blog system as an example to demonstrate how to configure routing in ThinkPHP. Assume we have a Blog controller containing a read method that displays article content.
In the config.php file, define a basic routing rule:
'URL_ROUTER_ON' => true,
'URL_ROUTE_RULES' => array(
'article/:id' => 'Blog/read', // Map /article/123 to the read method of the Blog controller
),
Then, implement the read method in the Blog controller:
public function read($id) {
$article = BlogModel::find($id); // Retrieve article data
$this->assign('article', $article); // Pass data to the view
$this->display(); // Render the template
}
Finally, display the article content in the template file:
<h1>{$article.title}</h1>
<p>{$article.content}</p>
With the above setup, visiting /article/123 will automatically trigger the Blog controller’s read method, passing the article ID as a parameter to render the appropriate content dynamically.
This article provided a comprehensive explanation of ThinkPHP routing configuration, covering its basic concepts, configuration methods, and practical examples. From simple to advanced routing, developers can choose flexible approaches to meet different project needs. Well-structured routing not only boosts development efficiency but also enhances scalability and maintainability of ThinkPHP applications.