我正在使用CakePHP 3.3.6和MySQL 5.7.13.
我的数据库(以及其他)中有这三个表:集合,标签和连接表collections_tags.
集合表
CREATE TABLE IF NOT EXISTS `database`.`collections` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(45) NOT NULL,
`event_date` DATE NOT NULL,
`url_slug` VARCHAR(45) NOT NULL,
`status` TINYINT(1) NOT NULL DEFAULT 0,
`user_id` INT UNSIGNED NOT NULL,
`created` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`, `user_id`),
INDEX `fk_collections_users1_idx` (`user_id` ASC),
CONSTRAINT `fk_collections_users1`
FOREIGN KEY (`user_id`)
REFERENCES `database`.`users` (`id`)
ON DELETE …
Run Code Online (Sandbox Code Playgroud) 我有一个CakePHP 3.3.14应用程序,我创建了2个子目录,webroot/data/downloads/
和webroot/data/master
我想将这些路径放在自定义配置文件中,并在Controller中引用它们.但我看不出怎么做.
我已经按照配置文档进行了操作,但不是很清楚.
所以我做了什么:
config/my_config.php
上面的文件定义了一个数组:
return [ 'downloadsPath' => 'webroot/data/downloads/', 'masterPath' => 'webroot/data/master/' ];
Run Code Online (Sandbox Code Playgroud)在config/bootstrap.php
我说:Configure::load('my_config', 'default');
我如何在控制器中使用它?如果我把Configure::read('my_config.masterPath');
它给出一个错误说:没有找到类'App\Controller\Configure'
如果我添加use Cake\Core\Configure;
到控制器的顶部,则清除错误但返回值为null
:
debug(Configure::read('my_config.masterPath')); // null
Run Code Online (Sandbox Code Playgroud) 我正在将我的 cakephp 版本从 2.6.7 升级到 3.3.4。以下代码可以正常工作以引用主页网址:
<?php echo Router::url('/', true); ?>
Run Code Online (Sandbox Code Playgroud)
但这在 cakephp 3.3.4 中不起作用,并显示以下错误消息:
Error: Class 'Router' not found
Run Code Online (Sandbox Code Playgroud)
我错过了哪个?提前致谢。
我正在尝试创建SEO友好的路由。我有一个包含酒店和旅馆客房的网站。我想创建一个路由进度,以路由到不同的控制器/动作。
我希望我的网址看起来像 www.hotelwebsite.com/language/hotel-name/room-name
这是我需要的三条路线:
如果网址具有语言参数+ 2个参数:
$routes->connect('/:language/:hotelname/:room/', ['controller' => 'rooms', 'action' => 'viewRoom']);
Run Code Online (Sandbox Code Playgroud)
哪里
public function viewRoom($hotel_slug, $room_slug)
Run Code Online (Sandbox Code Playgroud)
在其中
:hotelname == $hotel_slug and :room == $room_slug
Run Code Online (Sandbox Code Playgroud)
如果网址具有语言参数+ 1参数:
$routes->connect('/:language/:hotelname/', ['controller' => 'hotels', 'action' => 'viewHotel']);
Run Code Online (Sandbox Code Playgroud)
哪里
public function viewHotel($hotel_slug)
Run Code Online (Sandbox Code Playgroud)
在其中
:hotelname == $hotel_slug
Run Code Online (Sandbox Code Playgroud)
否则使用我的标准路线
$routes->connect('/:language/:controller/:action/*');
Run Code Online (Sandbox Code Playgroud)
这甚至可以实现吗?
cakephp ×4
cakephp-3.3 ×4
cakephp-3.x ×3
php ×3
cakephp-3.0 ×2
mysql ×1
routes ×1
url-routing ×1