📜  CodeIgniter-基本概念

📅  最后修改于: 2020-10-26 05:28:20             🧑  作者: Mango


控制器

控制器是一个简单的类文件。顾名思义,它通过URI控制整个应用程序。

创建一个控制器

首先,转到application / controllers文件夹。您将在此处找到两个文件index.htmlWelcome.php 。这些文件与CodeIgniter一起提供。

保持这些文件不变。在名为“ Test.php ”的相同路径下创建一个新文件。在该文件中编写以下代码-


Test类扩展了一个内置类CI_Controller 。每当您要创建自己的Controller类时,都必须扩展该类。

呼叫控制器

可以通过URI调用上述控制器,如下所示:

http://www.your-domain.com/index.php/test

注意上述URI中index.php之后的单词“ test ”。这表示控制器的类名称。因为我们给控制器起了“ Test ”的名字,所以我们在index.php之后写了“ test ”。类名必须以大写字母开头,但是当我们通过URI调用该控制器时,我们需要写小写字母。调用控制器的一般语法如下-

http://www.your-domain.com/index.php/controller/method-name

创建并调用构造方法

让我们修改以上类并创建另一个名为“ hello”的方法。


我们可以通过以下三种方式执行上述控制器-

在浏览器中访问了第一个URI之后,我们得到的输出如下图所示。如您所见,即使我们没有将方法的名称传递给URI,我们也获得了方法“ index ”的输出。我们在URI中仅使用了控制器名称。在这种情况下,CodeIgniter调用默认方法“ index ”。

指标输出

在浏览器中访问第二个URI,我们得到与上图所示相同的输出。在这里,我们在URI中传递了控制器名称之后的方法名称。因为该方法的名称是“ index ”,所以我们得到了相同的输出。

访问浏览器中的第三个URI,我们得到的输出如下图所示。如您所见,我们正在获取方法“ hello ”的输出,因为我们在URI中的控制器“ test ”的名称之后传递了“ hello ”作为方法名称。

你好输出

要记住的要点

  • 控制器类的名称必须以大写字母开头。

  • 必须使用小写字母来调用控制器。

  • 不要使用与父类相同的方法名称,因为它将覆盖父类的功能。

观看次数

这可以是简单或复杂的网页,可以由控制器调用。该网页可能包含页眉,页脚,侧边栏等。视图不能直接调用。让我们创建一个简单的视图。在应用程序/视图下创建一个名为“ test.php ”的新文件,并将以下给定的代码复制到该文件中。

 
      CodeIgniter View Example 
   
    
    
      CodeIgniter View Example 
   
    

如下所示更改application / controllers / test.php文件的代码。

加载视图

可以通过以下语法加载视图-

$this->load->view('name');

其中name是要呈现的视图文件。如果您计划将视图文件存储在某个目录中,则可以使用以下语法-

$this->load->view('directory-name/name');

除非使用.php以外的其他名称,否则不必将扩展名指定为php。

index()方法正在调用view方法,并将“ test”作为参数传递给view()方法,因为我们已将html编码存储在application / views / test.php下的“ test.php ”文件中。

load->view('test'); 
      } 
   } 
?>

这是上面代码的输出-

测试输出

以下流程图说明了一切工作原理-

流程图

楷模

模型类旨在与数据库中的信息一起使用。例如,如果您使用CodeIgniter来管理应用程序中的用户,则必须具有模型类,该模型类包含用于插入,删除,更新和检索用户数据的函数。

创建模型类

模型类存储在application / models目录中。以下代码显示了如何在CodeIgniter中创建模型类。

 

其中Model_name是您要提供的模型类的名称。每个模型类都必须继承CodeIgniter的CI_Model类。模型类的首字母必须为大写字母。以下是用户模型类的代码。


上面的模型类必须另存为User_model.php。类名和文件名必须相同。

加载模型

可以在控制器中调用模型。以下代码可用于加载任何模型。

$this->load->model('model_name');

其中model_name是要加载的模型的名称。加载模型后,您可以简单地调用其方法,如下所示。

$this->model_name->method();

自动加载模型

在某些情况下,您可能需要整个应用程序中的某些模型类。在这种情况下,最好是自动加载。

/*
| ---------------------------------------------------------------
|  Auto-Load Models
| ---------------------------------------------------------------
| Prototype:
|
|   $autoload['model'] = array('first_model', 'second_model');
|
| You can also supply an alternative model name to be assigned
| in the controller:
|  
|   $autoload['model'] = array('first_model' => 'first');
*/
$autoload['model'] = array();

如上图所示,在系统处于初始化状态并可在整个应用程序中访问的状态下,在要自动加载的数组中传递模型名称,它将自动加载。

帮手

顾名思义,它将帮助您构建系统。它分为几个小功能,以提供不同的功能。下表列出了CodeIgniter中提供的许多帮助程序。我们也可以建立自己的助手。

帮助程序通常存储在您的system / helpersapplication / helpers目录中。自定义帮助程序存储在application / helpers目录中,系统的帮助程序存储在system / helpers目录中。 CodeIgniter将首先出现在您的application / helpers目录中。如果该目录不存在或找不到指定的帮助程序,则CodeIgniter将改为在您的全局system / helpers /目录中查找。无论使用自定义助手还是系统助手,都必须先加载每个助手。

S.N. Helper Name & Description
1

Array Helper

The Array Helper file contains functions that assist in working with arrays.

2

CAPTCHA Helper

The CAPTCHA Helper file contains functions that assist in creating CAPTCHA images.

3

Cookie Helper

The Cookie Helper file contains functions that assist in working with cookies.

4

Date Helper

The Date Helper file contains functions that help you work with dates.

5

Directory Helper

The Directory Helper file contains functions that assist in working with directories.

6

Download Helper

The Download Helper lets you download data to your desktop.

7

Email Helper

The Email Helper provides some assistive functions for working with Email. For a more robust email solution, see CodeIgniter’s Email Class.

8

File Helper

The File Helper file contains functions that assist in working with files.

9

Form Helper

The Form Helper file contains functions that assist in working with forms.

10

HTML Helper

The HTML Helper file contains functions that assist in working with HTML.

11

Inflector Helper

The Inflector Helper file contains functions that permits you to change words to plural, singular, camel case, etc.

12

Language Helper

The Language Helper file contains functions that assist in working with language files.

13

Number Helper

The Number Helper file contains functions that help you work with numeric data.

14

Path Helper

The Path Helper file contains functions that permits you to work with file paths on the server.

15

Security Helper

The Security Helper file contains security related functions.

16

Smiley Helper

The Smiley Helper file contains functions that let you manage smileys (emoticons).

17

String Helper

The String Helper file contains functions that assist in working with strings.

18

Text Helper

The Text Helper file contains functions that assist in working with text.

19

Typography Helper

The Typography Helper file contains functions that help your format text in semantically relevant ways.

20

URL Helper

The URL Helper file contains functions that assist in working with URLs.

21

XML Helper

The XML Helper file contains functions that assist in working with XML data.

加载助手

可以如下所示加载助手:

$this->load->helper('name');

其中name是助手的名称。例如,如果要加载URL Helper,则可以将其加载为-

$this->load->helper('url');

路由

CodeIgniter具有用户友好的URI路由系统,因此您可以轻松地重新路由URL。通常,URL字符串与其对应的控制器类/方法之间存在一对一的关系。 URI中的段通常遵循此模式-

your-domain.com/class/method/id/
  • 第一部分代表应该调用的控制器类。

  • 第二段代表应该调用的类函数或方法。

  • 第三段以及任何其他段代表ID和将传递给控制器的任何变量。

在某些情况下,您可能需要更改此默认路由机制。 CodeIgniter提供了可用来设置自己的路由规则的工具。

自定义路由规则

有一个可以处理所有这些文件的文件。该文件位于application / config / routes.php。您会发现一个名为$ route的数组,您可以在其中自定义路由规则。 $ route数组中的键将决定要路由的内容,而值将决定要路由的位置。 CodeIgniter中有3条保留的路由。

S.N. Reserved Routes & Description
1

$route[‘default_controller’]

This route indicates which controller class should be loaded, if the URI contains no data, which will be the case when people load your root URL. You are encouraged to have a default route otherwise a 404 page will appear, by default. We can set home page of website here so it will be loaded by default.

2

$route[‘404_override’]

This route indicates which controller class should be loaded if the requested controller is not found. It will override the default 404 error page. It won’t affect to the show_404() function, which will continue loading the default error_404.php file in application/views/errors/error_404.php.

3

$route[‘translate_uri_dashes’]

As evident by the Boolean value, this is not exactly a route. This option enables you to automatically replace dashes (‘-‘) with underscores in the controller and method URI segments, thus saving you additional route entries if you need to do that. This is required because the dash is not a valid class or method-name character and will cause a fatal error, if you try to use it.

可以使用通配符或使用正则表达式来自定义路由,但请记住,这些自定义路由规则必须位于保留规则之后。

通配符

我们可以使用两个字符如下解释-

  • (:num) -它将匹配仅包含数字的段。

  • (:any) -它将匹配包含任何字符的段。

$route['product/:num']='catalog/product_lookup';

在上面的示例中,如果在URL的第一段中找到字面量词“ product”,而在第二段中找到数字,则改用“ catalog”类和“ product_lookup”方法。

常用表达

像通配符一样,我们也可以在$ route数组键部分使用正则表达式。如果任何URI与正则表达式匹配,则它将被路由到$ route数组中设置的值部分。

$route['products/([a-z]+)/(\d+)']='$1/id_$2';

在上面的示例中,类似于products / shoes / 123的URI将改为调用“ shoes ”控制器类和“ id_123 ”方法。