thikphp 控制器

控制器定義

類名和文件名一樣,

渲染輸出

渲染輸出使用return輸出

namespace app\\admin\\controller;
use app\\admin\\model\\User;
class Index
{
public function Index(){
$data = array(
'ming' => 'ming',
'ming' => 'xiao'
);
return json($data);
}
}

此時頁面渲染出json文件

thikphp 控制器

不能在控制器中中斷代碼。。

使用halt輸出

namespace app\\admin\\controller;
use app\\admin\\model\\User;
class Index
{
public function Index(){
$data = array(
'ming' => 'ming',
'ming' => 'xiao'
);
halt("輸出測試");
return json($data);
}
}

使用halt 輸出

thikphp 控制器

多級控制器

多級控制器 多級控制器直接在命名空間中使用

namespace app\\admin\\controller\\Index;
class Blog
{
public function index(){
}
public function read($id){
var_dump(url('index/blog/read', ['id' => 5, 'name' => 'ming']));
return $id;
}
}

定義了Index命名空間下的子控制器 Blog

目錄結構

thikphp 控制器

定義路由規則

use think\\facade\\Route;
Route::rule('blog/:id', 'index.blog/read');
Route::rule('/', 'Index/index');

訪問index路由下的blog目錄

基礎控制器

控制器都會有一個基礎控制器

系統會提供一個

app\\BaseController

基礎控制器

目錄文件如下

thikphp 控制器

所有的控制都有一個基礎控制類

app\\BaseController

由於是多應用模式。。基礎類移動到目錄下

thikphp 控制器

更改命名空間

namespace app\\index\\controller;

use think\\App;

use think\\exception\\ValidateException;

use think\\Validate;

namespace app\\index\\controller;

use think\\Request;

class Index extends BaseController

{

/**

* 顯示資源列表

*

* @return \\think\\Response

*/

public function index()

{

$action = $this->request->action();

$path = $this->app->getBasePath();

var_dump($action);

var_dump($path);

}

/**

* 顯示創建資源表單頁.

*

* @return \\think\\Response

*/

public function create()

{

//

}

/**

* 保存新建的資源

*

* @param \\think\\Request $request

* @return \\think\\Response

*/

public function save(Request $request)

{

//

}

/**

* 顯示指定的資源

*

* @param int $id

* @return \\think\\Response

*/

public function read($id)

{

//

}

/**

*

* @param int $id

* @return \\think\\Response

*/

public function edit($id)

{

//

}

/**

* 保存更新的資源

*

* @param \\think\\Request $request

* @param int $id

* @return \\think\\Response

*/

public function update(Request $request, $id)

{

//

}

/**

* 刪除指定資源

*

* @param int $id

* @return \\think\\Response

*/

public function delete($id)

{

//

}

}

輸出內容

string(5) "index" string(43) "/home/ming/PhpstormProjects/untitled12/app/"

控制器驗證

namespace app\\index\\controller;

use think\\exception\\ValidateException;

use think\\Request;

class Index extends BaseController

{

/**

* 顯示資源列表

*

* @return \\think\\Response

*/

public function index()

{

try {

$this->validate( [

'name' => 'thinkphp',

'email' => '[email protected]',

], 'app\\index\\validate\\User');

} catch (ValidateException $e) {

// 驗證失敗 輸出錯誤信息

dump($e->getError());

}

}

/**

* 顯示創建資源表單頁.

*

* @return \\think\\Response

*/

public function create()

{

//

}

/**

* 保存新建的資源

*

* @param \\think\\Request $request

* @return \\think\\Response

*/

public function save(Request $request)

{

//

}

/**

* 顯示指定的資源

*

* @param int $id

* @return \\think\\Response

*/

public function read($id)

{

//

}

/**

*

* @param int $id

* @return \\think\\Response

*/

public function edit($id)

{

//

}

/**

* 保存更新的資源

*

* @param \\think\\Request $request

* @param int $id

* @return \\think\\Response

*/

public function update(Request $request, $id)

{

//

}

/**

* 刪除指定資源

*

* @param int $id

* @return \\think\\Response

*/

public function delete($id)

{

//

}

}

這樣控制器驗證

空控制器

空控制器是當找不到的方法的時候調用的方法

 public function __call($name, $arguments)
{

// TODO: Implement __call() method.
return 'error request';
}

資源控制器

創建restful控制器

輸入

php think make:controller index@Blog

生成資源控制器

生成api

namespace app\\index\\controller;

use think\\Request;

class Blog

{

/**

* 顯示資源列表

*

* @return \\think\\Response

*/

public function index()

{

//

}

/**

* 保存新建的資源

*

* @param \\think\\Request $request

* @return \\think\\Response

*/

public function save(Request $request)

{

//

}

/**

* 顯示指定的資源

*

* @param int $id

* @return \\think\\Response

*/

public function read($id)

{

//

}

/**

* 保存更新的資源

*

* @param \\think\\Request $request

* @param int $id

* @return \\think\\Response

*/

public function update(Request $request, $id)

{

//

}

/**

* 刪除指定資源

*

* @param int $id

* @return \\think\\Response

*/

public function delete($id)

{

//

}

}

註冊資源路由即可

Route::resource('blog', 'Blog');

控制器中間件

編寫控制器

namespace app\\index\\middleware; 

class Hello
{
public function handle($request, \\Closure $next){
$request->hello = 'ming';
return $next($request);
}
}

使用路由註冊控制器

use think\\facade\\Route;

Route::rule('ming', 'index/index')->middleware(

[

app\\index\\middleware\\Hello::class

]

);

訪問 http://localhost:8082/index/ming

出現 ming

說明中間件註冊成功


分享到:


相關文章: