在CakePHP 3中,我找到了两种方法来查找用户是否已登录.
第一解决方案
if(!is_null($this->Auth->user('id'))){
// Logged in
}
Run Code Online (Sandbox Code Playgroud)
第二解决方案
if (!is_null($this->request->session()->read('Auth.User.id'))) {
// Logged in
}
Run Code Online (Sandbox Code Playgroud)
我认为第一个更好,因为它简洁明了.
有没有更好的方法来验证用户是否已登录?
我不是在寻找速度.我想用一种干净而富有表现力的方式来编写它.
我需要在我的用户实体中拥有一个虚拟属性.我跟着CakePHP书.
UserEntity.php
namespace App\Model\Entity;
use Cake\ORM\Entity;
class User extends Entity {
protected $_virtual = ['full_name'];
protected function _getFullName() {
return $this->_properties['firstname'] . ' ' . $this->_properties['lastname'];
}
}
Run Code Online (Sandbox Code Playgroud)
在控制器中
$users = TableRegistry::get('Users');
$user = $users->get(29);
$firstname = $user->firstname; // $firstname: "John"
$lastname = $user->lastname; // $lastname: "Doe"
$value = $user->full_name; // $value: null
Run Code Online (Sandbox Code Playgroud)
我完全按照这本书,我只得到了一个null价值.
我试着解析这个字符串:
[{"ZoneId": "1", "0": "1", "ZoneX": "29", "1": "29", "ZoneY": "27", "2": "27", "ZoneWidth": "76", "3": "76", "ZoneHeight": "61", "4": "61", "ZoneImage": "46", "5": "46", "ZonePointTo": "2", "6": "2"},
{"ZoneId": "2", "0": "2", "ZoneX": "382", "1": "382", "ZoneY": "226", "2": "226", "ZoneWidth": "-117", "3": "-117", "ZoneHeight": "98", "4": "98", "ZoneImage": "46", "5": "46", "ZonePointTo": "3", "6": "3"},
{"ZoneId": "3", "0": "3", "ZoneX": "108", "1": "108", "ZoneY": "74", "2": "74", "ZoneWidth": "363", "3": "363", "ZoneHeight": "83", "4": "83", "ZoneImage": "46", "5": …Run Code Online (Sandbox Code Playgroud) 我的设置是在Windows上工作,但我最近切换到Ubuntu 12.04 LTS,现在它将无法连接.当我加载一个我需要与SQL Server通信的页面时,我收到此错误:
由于缺少PHP扩展或未满足的依赖项,无法使用数据库驱动程序Cake\Database\Driver\Sqlserver
很明显CakePHP找不到SQL Server PDO驱动程序.
我找到了许多旧的教程来帮助我,但我最近才拿到了(我希望能够在我的CakePHP网站上使用PDO).这是我遵循的教程.
使用终端,我可以使用此命令访问数据库
sqlcmd -S my.sql.server.com -U username
Run Code Online (Sandbox Code Playgroud)
使用CakePHP 3.x从我的ubuntu安装连接到这个sql server数据库需要做什么?
我想用法语和英语翻译我的应用程序.我完全遵循CakePHP 3文档,但它无法正常工作.
对于我的开发,我正在使用一个流浪盒来轻松启动并运行CakePHP 3.这个盒子被命名为vagrant-chef
我修改了第100行,使用法语作为默认语言.
ini_set('intl.default_locale', 'fr_CA');
Run Code Online (Sandbox Code Playgroud)
我将此方法添加到默认的PagesController
public function initialize() {
I18n::locale('en');
}
Run Code Online (Sandbox Code Playgroud)
我添加了这两行
<?php echo __('Hey, bonjour'); ?>
<?php echo __('Je teste la traduction'); ?>
Run Code Online (Sandbox Code Playgroud)
从终端,我输入此命令bin/cake i18n extract.CakePHP在其中创建了2个文件/src/Locale/.这些文件是cake.pot和default.pot.我翻译了default.pot文件:
...
msgid "Hey, bonjour"
msgstr "Hey, hello"
...
Run Code Online (Sandbox Code Playgroud)
该/src/Locale文件现在看起来像这样:
/en
/default.pot
Run Code Online (Sandbox Code Playgroud)
尽管我试图翻译我的应用程序,但我没有得到任何工作.我认为这是一个缓存问题,所以我删除了文件/tmp/cache/persistent/.
谢谢.
cakephp-3.0 ×4
php ×4
cakephp ×3
arrays ×1
javascript ×1
json ×1
localization ×1
orm ×1
parsing ×1
pdo ×1
sql-server ×1