M project directory/application directory/Lib/Model V Project Directory/Application Directory/Tpl C project directory/application directory/Lib/Action1.PATHINFO mode http://domain name/project name/entry file/module name/method name/key 1/value 1/key 2/value 22. Normal mode http://domain name/project name/entry file?m=module name&a=method name&key1=value1&key2=value23.REWRITE module http://domain name/project name/module name/method name/key 1/value 1/key 2/value 24. Compatibility mode http://domain name/project name/entry file? s=module name/method name/key 1/value 1/key 2/value 2// This class is automatically generated by the system and is for testing purposes only class IndexAction extends Action { public function index(){ echo "hello world"; } public function add(){ echo "Hello, Wu Hao "; echo 'Hello'.$_GET['name'].'Your age is'.$_GET['age']; } }http://localhost/test/index.php/Index/add?name=wuhaohttp://localhost/test/index.php/Index/add/name/wuhaohttp://localhost/test/index.php/Index/add/name/wuhao/age/18
'URL_PATHINFO_DEPR'=>'-', //Modify the URL delimiter
'TMPL_L_DELIM'=>'<{', //Modify the left delimiter'TMPL_R_DELIM'=>'}>', //Modify the right delimiterhttp://localhost/test/index.php/Index-add-name-wuhao-age-23 http://localhost/test/index.php/Index/index http://localhost/test/index.php/Index/addpublic function add(){ /*echo "Hello, Wu Hao "; echo 'Hello'.$_GET['name'].'Your age is'.$_GET['age'];*/ $name='Wu Hao'; $this->assign('myname',$name); //$this->myname='abc'; $this->display(); } Some dynamic data can be assigned to template display through the assign() method
Accessed the add method.
Hello! {$myname}
D:wampwwwtestAppTplIndexYou need to operate the database in the form of new Model (table name) in the method $m=new Model('User'); $arr=$m->select(); 'DB_TYPE'=>'mysql', //Set the database type 'DB_HOST'=>'localhost',//Set the host 'DB_NAME'=>'thinkphp',//Set the database name 'DB_USER'=>'root', //Set user name 'DB_PWD'=>'', //Set password 'DB_PORT'=>'3306', //Set the port number 'DB_PREFIX'=>'tp_', //Set table prefix 'DB_DSN'=>'mysql://root:@localhost:3306/thinkphp',//Use the DSN method to configure database information, which has a higher priority than the traditional method $user=new Model('User'); $arr=$user->select(); var_dump($arr); $this->display();'SHOW_PAGE_TRACE'=>true,//Open page TraceThere is also a simple and practical model M() is equivalent to new Model(); $m=M('User'); $arr=$m->select();You can use model instances to operate data. The operation work is generally to add, delete, modify and check the database CURD Add -C Create $m->add() Delete -D Delete $m->delete() Change -U Update $m->save() Check -R Read $m->select()a. Templates can traverse arrays {$vo.id}----{$vo.username}-----{$vo.sex} b. We can enable page_trace in the debugging function 1. Enable debugging function define('APP_DEBUG',true); 2. We need to set up the configuration file and enable page trace 'SHOW_PAGE_TRACE'=>true,//Open page TraceRead data Reading of data Read $m=new Model('User'); $m=M('User'); select: $m->select(); //Get all data and return it in array form find:$m->find($id); //Get a single piece of data getField(field name) //Get a specific field value $arr=$m->where('id=2')->getField('username');Create data Adding data Create $m=new Model('User'); $m=M('User'); $m->Field name=value $m->add(); The return value is the new id numberDelete data $m=M('User'); $m->delete(2); //Delete the data with id 2 $m->where('id=2')->delete(); The return value is the number of affected rowsUpdate data $m=M('User'); $data['id']=1; $data['username']='ztz2'; $m->save($data); The return value is the number of affected rowsCURD Demo: ================================================== ================================================== ================================================== ===============================================Query method: 1. Common query methods a. String $arr=$m->where("sex=0 and username='gege'")->find(); b. Array $data['sex']=0; $data['username']='gege'; $arr=$m->where($data)->find(); Note: This method defaults to an and relationship. If you use an or relationship, you need to add an array value: $data['_logic']='or';2. Expression query method $data['id']=array('lt',6); $arr=$m->where($data)->select(); EQ is equal to, NEQ is not equal to, GT is greater than, EGT is greater than or equal to, LT is less than, ELT is less than or equal to, LIKE fuzzy query $data['username']=array('like','%ge'); $arr=$m->where($data)->select(); NOTLIKE $data['username']=array('notlike','%ge%'); $arr=$m->where($data)->select(); Note: If a field needs to match multiple wildcards $data['username']=array('like',array('%ge%','%2%','%五%'),'and'); //If there is no third Value, the default relationship is the or relationship BETWEEN $data['id']=array('between',array(5,7)); $arr=$m->where($data)->select(); //SELECT * FROM `tp_user` WHERE ( (`id` BETWEEN 5 AND 7 ) ) $data['id']=array('not between',array(5,7)); $arr=$m->where($data)->select(); IN $data['id']=array('in',array(4,6,7)); $arr=$m->where($data)->select(); //SELECT * FROM `tp_user` WHERE ( `id` IN (4,6,7) ) $data['id']=array('not in',array(4,6,7)); $arr=$m->where($data)->select(); //SELECT * FROM `tp_user` WHERE ( `id` NOT IN (4,6,7) )3. Interval query $data['id']=array(array('gt',4),array('lt',10)); //The default relationship is the relationship of and //SELECT * FROM `tp_user` WHERE ( (`id` > 4) AND (`id` < 10) ) $data['id']=array(array('gt',4),array('lt',10),'or') //The relationship is the relationship of or $data['name']=array(array('like','%2%'),array('like','%五%'),'gege','or');4. Statistical query count //Get the number; max //Get the maximum number; min //Get the minimum number; avg //Get the average; sum //Get the total 5. SQL direct query a. Query is mainly used to process reading data: successfully returns the result set of the data, and fails to return boolean false $m=M(); $result=$m->query("select * from t_user where id >50"); var_dump($result); b. execute is used to update a write operation: successfully returns the number of affected rows, and fails to return boolean false $m=M(); $result=$m->execute("insert into t_user(`username`) values('ztz3')"); var_dump($result);'DB_LIKE_FIELDS'=>'title|content' //The conditions in the query statement automatically become fuzzy query%%Query method demonstration: ================================================== ================================================== ================================================== ===============================================Commonly used coherent operations 1.where Help us set query conditions 2.order Sort the results $arr=$m->order('id desc')->select(); $arr=$m->order(array('id'=>'desc','sex' =>'asc'))->select(); 3.limit Limit results limit(2,5) limit('2,5') limit(10) //limit(0,10) 4.field Set query field field('username as name,id') field(array('username'=>'name','id') field('id',true) //Get all fields except id 5.table 6.group 7.having2. Supplement alias is used to define an alias string for the current data table page is used to query paging (will be converted to limit internally) strings and numbers join* is used to support joins for queries, strings and arrays union* for union support for queries strings, arrays and objects distinct distinct support for queries boolean lock Lock mechanism for database Boolean value cache is used to query the cache and supports multiple parameters (described in detail in the cache section later) relation is used for related queries (requires related model extension support) string validate is used for automatic data verification array auto is used for automatic data completion array filter is used for data filtering string scope* is used to name ranges strings and arrays ================================================== ================================================== ================================================== ===============================================View: 1. Use of templates a. Rules Under the template folder [TPL]/[Group Folder/][Template Theme Folder/] and the folder with the same name as the module name [Index]/the file with the same name as the method name [index].html (.tpl) Change the suffix of the template file (modify the configuration file) 'TMPL_TEMPLATE_SUFFIX'=>'.html', //Change the template file suffix name b. Modify the template file directory hierarchy 'TMPL_FILE_DEPR'=>'_', //Modify the template file directory hierarchy c. Template theme 'DEFAULT_THEME'=>'your', //Set the default template theme You need to create a new your folder under TPL as the template theme folder How to dynamically modify the template theme? 1. Prepare a function in the background to modify the default template item in the config.php file 2. Pass the t=theme parameter through the url to modify different templates 'DEFAULT_THEME'=>'your',//Set the default template theme 'TMPL_DETECT_THEME'=>true,//Automatically detect template themes 'THEME_LIST'=>'your,my',//Supported template theme listhttp://localhost/test/index.php/Index/index/t/my http://localhost/test/index.php/Index/index/t/you2. Output template content a. display 1. There are no parameters in display: $this->display(); 2. Can take parameters $this->display (other template files in this module folder); $this->display('index2'); $this->display (template files in other folders); $this->display('Public:error'); //Note that you only need to have the Public folder and error.html in it under Tpl, and you do not need to have the Public module $this->display (template files under folders under other themes); //Need to enable theme support $this->display('my:Index:index'); $this->display(a URL path); $this->display('./Public/error.html'); $this->display('./Public/error.html','utf-8','text/xml'); $this->show($content); 3.fetch method Get the content in the template file and return it as a string: $content=$this->fetch('Public:error'); 4.show method No template file is required, the template content can be output directly $content=$this->fetch('Public:error'); dump($content); $content=str_replace('h1','i',$content); $this->show($content);3. Assignment in templates //$this->assign('name','Zhao Tongzheng'); $this->name='Zhao Tongzheng2'; $this->display();4. Template replacement __PUBLIC__: will be replaced by the public directory of the current website, usually /Public/__ROOT__: will be replaced with the address of the current website (excluding domain name)__APP__: will be replaced by the URL address of the current project (excluding domain name) __GROUP__: will be replaced by the URL address of the current group (excluding domain name) __URL__: will be replaced by the URL address of the current module (excluding domain name) __ACTION__: will be replaced by the URL address of the current operation (excluding domain name) __SELF__: will be replaced with the current page URL Change template variable rules and modify configuration items 'TMPL_PARSE_STRING'=>array( //Add your own template variable rules '__CSS__'=>__ROOT__.'/Public/Css', '__JS__'=>__ROOT__.'/Public/Js', ),Login box example: Introduce the extension class and put the files in ThinkPHP3.1.2_Extend in the D:wampwwwtestThinkPHPExtend folder.Corresponding js and css: D:wampwwwtestPublicCss ·D:wampwwwtestPublicJs================================================== ================================================== ================================================== ===============================================Variables in template: 1. Variable output 1. Scalar output 2. Array output {$name[1]} {$name['k2']} {$name.k1} 3. Object output {$name:k} {$name->k}2. System variables
用法
含义
例子
$Think.server
获取$_SERVER
{$Think.server.php_self}
$Think.get
获取$_GET
{$Think.get.id}
$Think.post
获取$_POST
{$Think.post.name}
$Think.request
获取$_REQUEST
{$Think.request.user_id}
$Think.cookie
获取$_COOKIE
{$Think.cookie.username}
$Think.session
获取$_SESSION
{$Think.session.user_id}
$Think.config
获取系统配置参数
{$Think.config.app_status}
$Think.lang
获取系统语言变量
{$Think.lang.user_type}
$Think.const
获取系统常量
{$Think.const.app_name}或{$Think.APP_NAME}
$Think.env
获取环境变量
{$Think.env.HOSTNAME}
$Think.version
获取框架版本号
{$Think.version}
$Think.now
获取当前时间
{$Think.now}
$Think.template
获取当前模板
{$Think.template}
$Think.ldelim
获取模板左界定符
{$Think.ldelim}
$Think.rdelim
获取模板右界定符
{$Think.rdelim}
Usage
Meaning
Example
$Think.server
Get $_SERVER
{$Think.server.php_self}
$Think.get
Get $_GET
{$Think.get.id}
$Think.post
Get $_POST
{$Think.post.name}
$Think.request
Get $_REQUEST
{$Think.request.user_id}
$Think.cookie
GET $_COOKIE
{$Think.cookie.username}
$Think.session
Get $_SESSION
{$Think.session.user_id}
$Think.config
Get system configuration parameters
{$Think.config.app_status}
$Think.lang
Get system language variables
{$Think.lang.user_type}
$Think.const
Get system constants
{$Think.const.app_name} or {$Think.APP_NAME}
$Think.env
Get environment variables
{$Think.env.HOSTNAME}
$Think.version
Get the framework version number
{$Think.version}
$Think.now
Get the current time
{$Think.now}
$Think.template
Get the current template
{$Think.template}
$Think.ldelim
Get template left delimiter
{$Think.ldelim}
$Think.rdelim
Get template right delimiter
{$Think.rdelim}
3. Use functions {$name|strtoupper} The compiled file generated is: {$name|date='Y m d H:i:s',###}4. Default value {$name|default='This is the default value'}5. Operators - * / % -- {$name }Basic syntax in templates: 1. Import CSS and JS files 1. 2.import //Import the test.js file in the Js directory under the Public folder. The import tag can omit the type attribute. The default is js //You can change the default folder and set the basepath attribute 3.load //Method can automatically detect the imported file type2. Branch structure Underage Youth Adult > gt < lt == eq <= elt >= egt != neq === heq !== nheq A monk carries water to eatTwo monks eat Taiwan waterThree monks have no water to eat This is the default value3. Loop structure 1.for
4. Special tags 1. Compare tags eq or equal is equal to neq or notequal is not equal to gt is greater than egt is greater than or equal to lt is less than elt is less than or equal to heq is equal to nheq is not equal to 2. Range tag in Inside these numbersNot within the range of these numbersWithin these numbersNot within the range of these numbers between{$n} is between 1-10{$n} is not between 1 and 10
3.present: tag to determine whether the template variable has been assigned a value, m has a value assignedm has no value assigned 4.Empty: The empty tag determines whether the template variable is empty, n is empty assignmentn has value 5.Defined: Determine whether the constant has been defined 6.Define: Define constants in templates 7.Assing: Assigning values to variables in templates5. Use of other tags 1. Use PHP code directly in the template echo "I am Zhao Tongzheng" 2. It is recommended to change the left and right delimiters Change in configuration file
'TMPL_L_DELIM'=>'<{', //Modify the left delimiter 'TMPL_R_DELIM'=>'}>', //Modify the right delimiterTips for using templates: 1. Template contains Use [variable] to accept variables in templates: 2. Template rendering 1. Automatically turn on template rendering and set the configuration file 'LAYOUT_ON'=>true, //Enable template rendering Prepare a template rendering page and use {__CONTENT__} in the page to accept the content of the specific template page If you do not want to use the rendering template in a specific template, you can add {__NOCONTENT__} at the top of the page
2. If you do not enable automatic template rendering, you can add at the top of each specific page: 3. Usage tips: You can also use the content of other template files in the rendering template file & lt; p & gt; This is the rendering page! ! ! {__CONTENT__}