私はそれがインデックスアクションでapp/controllers/UsersController.php
簡単にできるようにしました。Users::find('all');
パス/users/index
は、ユーザー データのプレーンな 'ol HTML 出力をレンダリングします。このパス/users/index.json
は、HTML 出力に相当する JSON をレンダリングします。これは、パスワード (ハッシュされていますが、それでも...) も公開するという事実を除けば、優れています。
これを回避するには、次の 2 つのオプションがあります。
fields
ファインダーで明示的に指定します。Media::render()
機密データをフィルタリングして設定解除します。
長期的には、#2の方が維持しやすいと思います。ご意見はありますか?3 番目のより良い代替手段はありますか?
これは私が#2を実装した方法です:
<?php
namespace app\controllers;
use \lithium\net\http\Media;
class UsersController extends \lithium\action\Controller {
protected function _init() {
Media::applyFilter('render', function($self, $params, $chain) {
if ($params['options']['type'] === 'json') {
foreach ($params['data']['users'] as $user) {
$user->set([
'password' => null,
'salt' => null
]);
}
}
return $chain->next($self, $params, $chain);
});
parent::_init();
}
}
?>
アドバイスをいただければ幸いです。