这次的软件工程大实验选择使用了thinkphp进行编写。虽然实验写得比较粗糙,但是在实现过程中还是遇到了几个问题的。
问题描述
整个系统的界面是采用继承的方式实现的,页面的菜单部分都使用同样的代码。菜单上有一个功能是用户信息。效果是点击它,就可以修改当前登录用户的信息。

实现思路
应为在登录的时候,通过使用session将当前登录的用户id存了起来。所以直接获取当前登录的id,然后点击按钮的时候将id传入,编辑这个人信息。
实现过程
控制器中获取登录用户的id,传入V层:
|
|
v层直接添加跳转,跳转到编辑的界面:
|
|
这时候报了这么一个错:

$teacherId没有定义,首先就去检查了一下我有没有拼写出错,发现没有后,检查这个变量是否传过来了,将变量换一个位置,变量存在。这时候陷入了僵局,完全不知道问题所在。又仔细看一一下报错,这时候文件名引起了我的注意,这是一个编译后的文件,将html中的tp代码都进行了转义。

这里突然发现这并不是我以为的文件,报错的位置是另一个文件。看到这里就知道问题的原因了。因为我的菜单使用了继承,所以没有重写的位置,完全使用原来的代码,但是这个时候,这个文件的控制器并没有定义$teacherId这个变量。

原因找到了,解决起来就简单了。
控制器使用了继承,有一个基本控制器,在这个基本控制器中定义一个构造函数,通过构造函数获取当前登录的用户id。相当在所有的控制器中都定义了$teacherId了。
总结
1.通过解决这个问题,又一次发现了快速找到问题原因的重要性。
2.不要想当然的定位错误。