码迷,mamicode.com
首页 > Web开发 > 详细

Trying to get property of non-object_thinkphp路由报错

时间:2017-05-07 01:03:20      阅读:928      评论:0      收藏:0      [点我收藏+]

标签:路由规则   trying   流年   title   cat   erro   cep   index   blog   

在阅读《thinkphp5.0快速入门》这本书时,模型基础这一节碰到一点路由上的问题。在此随笔记一下。

碰到的问题:

技术分享

[8] ErrorException in UserController.php line 43

Trying to get property of non-object

Controller.php

public function read($id=‘‘){
    $user = Usermodel::get($id);
    echo "-----------function read() running...-----------<br/>";
    echo "id : ".$id."<br/>";
    echo $user->nickname.‘<br/>‘;
    echo $user->email.‘<br/>‘;
    echo date(‘Y/m/d‘, $user->birthday).‘<br/>‘;
}
public function read2($id=‘‘){
    $user = Usermodel::get($id);
    echo "-----------function read2() running...-----------<br/>";
    echo "id : ".$id."<br/>";
    echo $user[‘nickname‘]."<br/>";
    echo $user[‘email‘]."<br/>";
    echo date(‘Y/m/d‘, $user[‘birthday‘])."<br/>";
}

 

碰到这个问题,是因为在路由中添加了与教程不一样的路由规则。教程中定义了一条规则:

‘user/:id‘        => ‘index/user/read‘,

这样在浏览器输入http://www.mjtest.com/user/3, 就能访问到read方法。

我在read方法后面又新增了一个read2方法,为了访问到这个方法,在路由规则后面新增了一条:

‘user/read2/:id‘    => ‘index/user/read2‘

也就是说,现在的路由规则最后两行是

‘user/:id‘        => ‘index/user/read‘,
‘user/read2/:id‘    => ‘index/user/read2‘,

这样在浏览器输入http://www.mjtest.com/user/read2/3,并没有按预期去访问read2方法,实际上这个url在顺序读取路由规则时,

先读取到‘user/:id‘        => ‘index/user/read‘这条规则,就认为url是符合这条规则的。就把read2,3当成两个参数传递给了read方法

浏览器输入结果如图

技术分享

从图中结果可以知道,服务器实际上访问到了read方法里。

将路由修改如下:

route.php
‘user/read2/:id‘    => ‘index/user/read2‘,
‘user/:id‘        => ‘index/user/read‘,

访问url:http://www.mjtest.com/user/read2/3

访问结果:

-----------function read2() running...-----------
id : 3
流年
liunian@qq.com
1977/03/05

这样就正确访问到read2方法了。

Trying to get property of non-object_thinkphp路由报错

标签:路由规则   trying   流年   title   cat   erro   cep   index   blog   

原文地址:http://www.cnblogs.com/flyfish919/p/6819217.html

(1)
(3)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!