菜单

ThinkPHP中I('post.')与create()方法的对待

2019年1月24日 - 金沙编程资讯

3、I(‘post.’)方法内置默许过滤方法htmlspecialchars可过滤html实体,create()方法需手动创造。

        /**
         * 将新创制的稿子存储到存储器
         *
         * @param Request
$request
         * @return Response
         */
        public function store(Request $request)
        {
            $title = $request->input(‘title’);
            $content = $request->input(‘content’);

    class PostController extends Controller
    {
        /**
         * 突显小说列表.
         *
         * @return Response
         */
        public function index()
        {
            //
        }

叠加规则:

6、I(‘post.’)方法多用于字段数据较少,不要求一层层活动成效的场所,create()方法则相反。

3、在模型事件中拔取缓存

/**
* 展现小说列表.
*
* @return Response
*/
public function index()
{
    $posts = Cache::get(‘posts’,[]);
    if(!$posts)
        exit(‘Nothing’);

结果:

1、二者都可用来选用post表单提交的数据。

2、修改控制器

    Cache::put(‘posts’,$posts,60);
    return
redirect()->route(‘post.show’,[‘post’=>Cache::get(‘post_id’)]);
}
3.4 删除文章

金沙国际 1

4、create()方法包涵一密密麻麻 自动验证 自动处理
字段映射等体制(需自定义规则),I(‘post.’)方法无。

    class PostController extends Controller
    {
        /**
         * 展现作品列表.
         *
         * @return Response
         */
        public function index()
        {
           
//使用all获取具有数据,倘若数据量大使用分页获取
            $posts = Post::all();
            if(!$posts)
                exit(‘还尚未颁发任何小说!’);

/**
* 将新创设的稿子存储到存储器
*
* @param Request $request
* @return Response
*/
public function store(Request $request)
{
    $title = $request->input(‘title’);
    $content = $request->input(‘content’);
    $post = [‘title’=>trim($title),’content’=>trim($content)];

protected $_validate = array(     
    array(验证字段1,验证规则,错误提示,[验证条件,附加规则,验证时间]), 
    array(验证字段2,验证规则,错误提示,[验证条件,附加规则,验证时间]),
     ......
);    

简单来讲概括:

创设小说模型

末尾大家再来定义一个用以突显所有小说列表的index方法:

在控制器中拔取create()方法,(重回值为true/false),会自动触发模型类中的$_validate属性(为父类Model中的方法,在子类Model中重写),在$_validate中自定义表达规则(验证规则上边会详细表明),当create()方法没有数量即重临值为false时,通过$xxx对象->getError();获取并回到错误信息!

5、I(‘post.’)方法可选用所有表单字段,create()方法创制的数额对象会活动过滤掉与数据表中字段不匹配的表单字段。

            $html = ‘<ul>’;

    return redirect()->route(‘post.index’);

<td style="width:13%; text-align: right;">
    <label for="User_username" class="required">用户名 
    *</label>
</td>

<td style="width:87%;">
    <input class="inputBg" size="25" name="username" id="User_username" type="text" value="" />                  
    <{$error.username|default:""}>
</td>

2、I(‘post.’)方法可径直吸纳赋值给变量如$post=I(‘post.’),create()方法源于父类模型封装,需先实例化父类模型,如:$post=M(‘Test’)->create()。

    use Cache;
    use App\Models\Post;

同理大家定义编辑成文对应的edit方法和update方法如下:

表达时间(可选):共有1,2,3二种,1:新增多少时候证实;2:编辑数据时候证实;3:全部场合下验证(默许);也可以可以依照作业需求充实其余的辨证时间

            if(!Cache::get(‘post_views_金沙国际,’.$id))
                Cache::forever(‘post_views_’.$id,0);
            $views = Cache::increment(‘post_views_’.$id);
            Cache::forever(‘post_views_’.$id,$views);

    $html .= ‘</ul>’;

控制器代码:

    use App\Http\Requests;
    use App\Http\Controllers\Controller;

        /**
         * 从存储器中移除指定小说
         *
         * @param int $id
         * @return Response
         */
        public function destroy($id)
        {
            //
        }
    }
2、为RESTFul风格控制器注册路由
接下去大家在routes.php文件中为该控制器注册路由:

注解条件(可选):有0,1,2三种,0:_POST中存在的字段验证,默许;1:验证规则定义了就亟须表明;2:值不为空时验证.

            $postUrl = route(‘post.update’,[‘post’=>$post]);
            $csrf_field = csrf_field();
            $html = <<<CREATE
                <form action=”$postUrl” method=”POST”>
                    $csrf_field
                    <input type=”hidden” name=”_method”
value=”PUT”/>
                    <input type=”text” name=”title”
value=”{$post->title}”><br/><br/>
                    <textarea name=”content” cols=”50″
rows=”5″>{$post->content}</textarea><br/><br/>
                    <input type=”submit” value=”提交”/>
                </form>
CREATE;
            return $html;

    $posts[$id][‘title’] = trim($title);
    $posts[$id][‘content’] = trim($content);

其中验证字段,验证规则,错误提醒是必填项,验证条件,附加规则,验证时间为可选!

            if(!$post)
                exit(‘指定文章不设有!’);

    $posts = Cache::get(‘posts’,[]);
   
    if(!Cache::get(‘post_id’)){
        Cache::add(‘post_id’,1,60);
    }else{
        Cache::increment(‘post_id’,1);
    }
    $posts[Cache::get(‘post_id’)] = $post;

证实规则(必填):require
字段必须、email 邮箱、url URL地址、number 数字,还足以构成附加规则使用。

            return $html;
        }

Route::resource(‘post’,’PostController’);
该路由包括了指向多少个动作的子路由:

regex 正则验证,定义的验证规则是一个正则表达式(默认)
function 函数验证,定义的验证规则是一个函数名
callback 方法验证,定义的验证规则是当前模型类的一个方法
confirm 验证表单中的两个字段是否相同,定义的验证规则是一个字段名
equal 验证是否等于某个值,该值由前面的验证规则定义
notequal 验证是否不等于某个值,该值由前面的验证规则定义(3.1.2版本新增)
in 验证是否在某个范围内,定义的验证规则可以是一个数组或者逗号分割的字符串
notin 验证是否不在某个范围内,定义的验证规则可以是一个数组或者逗号分割的字符串(3.1.2版本新增)
length 验证长度,定义的验证规则可以是一个数字(表示固定长度)或者数字范围(例如3,12 表示长度从3到12的范围)
between 验证范围,定义的验证规则表示范围,可以使用字符串或者数组,例如1,31或者array(1,31)
notbetween 验证不在某个范围,定义的验证规则表示范围,可以使用字符串或者数组(3.1.2版本新增)
expire 验证是否在有效期,定义的验证规则表示时间范围,可以到时间,例如可以使用 2012-1-15,2013-1-15 表示当前提交有效期在2012-1-15到2013-1-15之间,也可以使用时间戳定义
ip_allow 验证IP是否允许,定义的验证规则表示允许的IP地址列表,用逗号分隔,例如201.12.2.5,201.12.2.6
ip_deny 验证IP是否禁止,定义的验证规则表示禁止的ip地址列表,用逗号分隔,例如201.12.2.5,201.12.2.6
unique 验证是否唯一,系统会根据字段目前的值查询数据库来判断是否存在相同的值,当表单数据中包含主键字段时unique不可用于判断主键字段本身

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图