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('文件路径');?>

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

  1. Python基础教程:一次性搞定 Django Form

    最近在项目上用到了 Django 的自带的 Form 表单,遇到了一些坑,今天给大家出的这篇Python基础教程也是做了一个简单的总结,大家可以对号出坑. Form 基础介绍 首先让我们先来了解下 D ...

  2. Go语言基础教程:版本选择

    专题目标:打造Go语言新手入门零基础免费教程 文章核心:一次只解决一个问题,用尽可能短的时间 你好,我是洋一,一个持续向上生长的互联网人. 众所周知,我们学习一门编程语言,很大程度上都离不开搭建该编程 ...

  3. 关于html2canvas截图模糊的CDN版本差异的一个坑

    问题 项目使用html2canvas截图,存在截图模糊.左边是原html,右边是html2canvas生成的截图,明显发现html2canvas生成的模糊一大截 查了解决办法,解决html2canva ...

  4. Python基础教程(008)--第一个Python程序

    前言: 学会第一个Python程序 了解Python2和Python3的区别 内容 执行Python程序的三种方式 解释器--Python.Python3 交互式-- ipthon 集成开发环境--P ...

  5. Spring Boot 2.x基础教程:使用JdbcTemplate访问MySQL数据库

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 翟永超 来源 | didispace.com/ ...

  6. Spring Boot 2.x基础教程:使用LDAP来管理用户与组织数据

    很多时候,我们在做公司系统或产品时,都需要自己创建用户管理体系,这对于开发人员来说并不是什么难事,但是当我们需要维护多个不同系统并且相同用户跨系统使用的情况下,如果每个系统维护自己的用户信息,那么此时 ...

  7. maya mel uf8_mayamel基础教程(8)_maya教程

    MayaMel基础教程 阵列 你可以声明一个int,float,string或vector类型的阵列.阵列的第一个序号为0 string$array[3]={"first\n",& ...

  8. Spring Cloud Alibaba 基础教程:Nacos 生产级版本 0.8.0

    Spring Cloud Alibaba 基础教程:Nacos 生产级版本 0.8.0 昨晚Nacos社区发布了第一个生产级版本:0.8.0.由于该版本除了Bug修复之外,还提供了几个生产管理非常重要 ...

  9. Spring Cloud Alibaba基础教程:Nacos 生产级版本 0.8.0

    昨晚Nacos社区发布了第一个生产级版本:0.8.0.由于该版本除了Bug修复之外,还提供了几个生产管理非常重要的特性,所以觉得还是有必要写一篇讲讲这次升级,在后续的文章中也都将以0.8.0版本为基础 ...

最新文章

  1. 好礼相送|CSDN云原生 Meetup 成都站报名热烈启动,12.18见!
  2. 深入浅出JVM-内存模型
  3. 作着玩:登录页(纯css,不支持ie9以下)
  4. 小学生四则运算JAVA
  5. Rust: join,与concat
  6. Android应用程序开发习题答案
  7. 经济数据预测 | Python实现ELM极限学习机股票价格时间序列预测
  8. 《锋利的JQuery》读书笔记
  9. ArcGIS裁剪时警告 warning001003:Datum conflict between input and output
  10. linux新建数字名字用户,linux 用户、用户组不能是全数字
  11. 【Transformer】李沐论文逐段精读学习笔记
  12. 《BPF( 伯克利数据包过滤器 ) Performance Tools》 第六章 CPU
  13. python 画图 设置 中英文字体
  14. 史上最完整的5G NR介绍
  15. JSP——标准标签库 (JSTL)
  16. JavaScript 实例:当当网 首页选项卡切换效果
  17. 开发常用图标png、ico 图标下载
  18. dependence walker
  19. OpenCore的编译
  20. 从JD-Business战略看京东企业购:“科技+服务”双管齐下

热门文章

  1. 基于3DSOM的侧影轮廓方法空间三维模型重建
  2. webmail邮件服务器搭建_U-Mail邮件服务器
  3. [凯圣王]增肌减脂能同时/如何评判健身效果/什么是重量+容量单元
  4. 本次操作由于这台计算机的限制而被取消,请与你的系统管理员联系,问题解决措施。
  5. 互联网快讯:小红书启动最严医美治理;极米投影产品受消费者肯定;小米手机小爱同学新增上课模式
  6. android APN -电信
  7. php页面漏洞分析及相关问题解决
  8. 曾经阿里、腾讯随我选,现在月薪五千都没人要,35岁程序员真的要去卖炒饭了吗?
  9. finereport的 SQL函数
  10. [win转mac]-mac安装autojump