标签: cakephp-3.3

检索数据时"无法将值转换为字符串"(belongsToMany关系)

我正在使用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)

php mysql cakephp cakephp-3.x cakephp-3.3

7
推荐指数
1
解决办法
4863
查看次数

CakePHP 3中的自定义配置文件

我有一个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)

php configuration cakephp cakephp-3.0 cakephp-3.3

4
推荐指数
1
解决办法
2576
查看次数

在 cakephp 3 中找不到“路由器”类

我正在将我的 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)

我错过了哪个?提前致谢。

php routes cakephp cakephp-3.x cakephp-3.3

1
推荐指数
1
解决办法
6243
查看次数

CakePHP 3路由与参数

我正在尝试创建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 url-routing cakephp-3.0 cakephp-3.x cakephp-3.3

0
推荐指数
1
解决办法
1565
查看次数