Codeigniter 4基础教程(2)-- 版本差异,模板,一个form例子

0.版本差异
Codeigniter 4 与Codeigniter 3差异比较大,比如v3中的

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

就会报错。
另外,开发过程中,建议开启debug模式,发布时可以改回去,
app/Config/Boot/production.php中的

ini_set('display_errors', '1');

这样就不会出现“Whoops! We seem to have hit a snag. Please try again later…”而是有用的bug信息了。

1.模板
模板的概念源远流长,其目的在于把网页分成若干部分,把不变的部分和变动的部分区分开来,便于管理。其实,PHP语言本身的特性决定了模板其实是个多余的鸡肋,虽然laravel,phalcon等也有相应的引擎模板,大家也在用,但是没有模板引擎照样可以换新天。

2.拼接模板的例子
创建app/controllers/ViewTemplate.php。这里有个小问题:之所以用echo好几个view而非return,因为return只有一次。

<?php namespace App\Controllers;

class ViewTemplate extends BaseController
{
    
    
	public function index()
	{
    
    
		// return view('welcome_message');
		echo view('header');
		echo view('main');
		echo view('footer');
	}
}

分别创建app/views/header, app/views/main.php, app/views/footer.php

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <header>I am header</header>

<div>
    I am body
</div>
    <div>I am footer</div>
</body>
</html>

效果如下:
在这里插入图片描述

3.一个form展示
Codeigniter默认并没有安装许多库,这里就需要设置一下。有两种方式引入helper,这里用一种:

helper('form');

这里只做一个演示,具体的内容还是查看官方文档为好。其具体的参数比较统一,第一个对应html的name,之后的是value等参数。

<?php namespace App\Controllers;

class MyHelper extends BaseController
{
    
    
	public function index()
	{
    
    
		helper('form');
		echo form_open('MyHelper/user',array('id'=>'xyz','class'=>'xyz'));
		echo form_input('name','','placeholder = "Enter your name"');
		echo form_input('myname','',array('id'=>'myid','class'=>'myclass'));
		echo form_textarea('myTextArea','',array('class'=>'myclass'));
		echo form_password('mypassword','',array('class'=>'myclass'));
		echo form_upload('fileName','','');
		$myvar = array(
			'1'=>1,'2'=>2,'3'=>3,'4'=>4
		);
		echo form_dropdown('myDropdown',$myvar,'4','');
		echo form_label('Enter your name','gi9');
		echo form_hidden('xyz','my value','');
		echo form_multiselect('abdc',$myvar);
		echo form_checkbox('gender','teagy',true,'');
		echo form_radio('a34','xygze',true);
		// echo form_open_multipart();
		echo form_submit('Send Now','Submit Now','');
		echo form_close();
	}

	public function user()
	{
    
    
		echo 'working now';
	}

	//--------------------------------------------------------------------
	public function hello()
	{
    
    
		echo '<h1>Hello codeigniter 4-0-3<h1>';
	}
}

在这里插入图片描述
建议点开html源代码查看其具体的指代。关键在于open_form中的指代的路径曾经给我惹了点麻烦。
点击submit now按钮,
在这里插入图片描述
后记:前面提到模板问题对PHP而言显得很尴尬。具体是想这样的写法亦或是html源代码的写法,大家自己斟酌。

4.模板的继承
其他的模板引擎,比如twig,smarty,blade都支持模板继承,在这里仅进行一下演示。关于模板的问题,请参考上面的后记。

<?php namespace App\Controllers;

class Home extends BaseController
{
    
    
	public function index()
	{
    
    
		// return view('welcome_message');
	 //echo '<h1>Hello Codeigniter 4.0.3<h1>';
	//echo view('home');
		return view('site/services');
	}

	//--------------------------------------------------------------------
	public function hello()
	{
    
    
		echo '<h1>Hello codeigniter 4-0-3<h1>';
	}
	public function newUser()
	{
    
    
		$request = \Config\Services::request();
		echo $request->getVar('email');

	}
}

app/views/layout/main.php

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Welcome to my site</title>
</head>
<body>
    <header>head here</header>
    <?= $this->renderSection('content');?>
    <footer>
    <?php echo $this->renderSection('footer');?>
    </footer>
</body>
</html>

app/viewssite/services.php

<?= $this->extend('layout/main');?>


<?= $this->section('content');?>
<h1>欢迎来到我的网站</h1>
<?= $this->endSection();?>

<?= $this->section('footer');?>
<h1>我是脚</h1>
<?= $this->endSection();?>

在这里插入图片描述
需要引入css时,打开helper(‘html’);

<?= script_tag("public/js/script.js")?>
<?= link_tag("public/js/style.css")?>

补充:也可以导入部分页面,

<?php $this->include('文件路径');?>

猜你喜欢

转载自blog.csdn.net/yaoguoxing/article/details/106584296
今日推荐