cakephp-3.0cakephp-3.0入门


备注

本节概述了cakephp-3.0是什么,以及开发人员为什么要使用它。

它还应该提到cakephp-3.0中的任何大型主题,并链接到相关主题。由于cakephp-3.0的文档是新的,您可能需要创建这些相关主题的初始版本。

建立第一个'Hello World!' CakePHP 3.x的应用程序(控制器,响应,视图。第3部分)

想要创建一个控制器?有两种方法可以创建它:

  • 手动(您将被迫在src/Controller 手动创建Controller文件)
  • 烘焙(从CLI运行bin/cake bake controller %controllerName% 命令)

如果要手动创建它,请转到src/Controller 文件夹并创建遵循下一个模式的文件:

([AZ]{1}[az]{1,})Controller.php

在该控制器中,您应该定义将使用的namspace

<?php
    namespace App\Controller;
 

那你应该把它命名为文件名,例如。 AdminiController:

use App\Controller\AppController;

class AdminController extends AppController{}
 

在这个类的内部,你应该创建你的第一个方法,例如。 login

public function login(){}
 

如果您要输入您的浏览器: http://{{project-name}}/admin/login ,它将抛出缺少模板的错误。如何解决这个问题呢?

您需要在src/Template/Admin/ login.ctp 文件下创建。

注意 :* .ctp通配符 - 是Cake模板文件,用于传递/呈现数据您通过控制器进行设置。

在该文件中输入“Hello World!”你想要的地方,刷新页面模板错误,你会得到你的World ,迎接你!

注意 :默认情况下,如果您没有定义一个,则src/Template/Layout/default.ctp 将呈现为布局

建立第一个'Hello World!' CakePHP 3.x的应用程序(数据库表迁移。第2部分)

您可以轻松地为您的数据库create 表,或者根据需要drop 它们。如果您希望这样做,您应该学习如何为所需的数据库编写Migrations

迁移文件必须位于config/Migrations 文件夹中。文件名可以采用下列格式:

  • YYYYMMDDHHIISS_(Create|Alter|Delete)AdministratorsTable.php
  • (1-9){1,}_(Create|Alter|Delete)AdministratorsTable.php
<?php
use Migrations\AbstractMigration;
use Cake\Log\Log;

/**
 * Class AdministratorsTableMigration
 */
class AdministratorsTableMigration extends AbstractMigration
{

    /**
     * @var string
     */
    private $_tableName;

    /**
     * @var string
     */
    private $_tablePrefix;

    public function init()
    {
        $this->_tableName = '"Administrators"';
        $this->_tablePrefix = 'administrators';
    }

    public function up()
    {
        Log::info("Trying to create {$this->_tableName} table");

        $administratorsTable = $this->table($this->_tablePrefix);

        if ($administratorsTable->exists()) {
            return Log::warning("Table {$this->_tableName} already exists");
        }

        $administratorsTable
            ->addPrimaryKey('id')
            ->addColumn('username', 'char', [
                'length' => 25,
                'null' => false
            ])
            ->addColumn('password', 'char', [
                'length' => 255,
                'null' => false
            ])
            ->addColumn('email', 'char', [
                'length' => 50,
                'null' => false
            ])
            ->addColumn('first_name', 'char', [
                'length' => 50,
                'null' => false
            ])
            ->addColumn('last_name', 'char', [
                'length' => 50,
                'null' => false
            ])
            ->addColumn('avatar', 'char', [
                'length' => 255,
                'default' => '/img/no-avatar.png'
            ])
            ->addColumn('active', 'boolean', [
                'default' => 0
            ])
            ->addTimestamps()
            ->create();

        return Log::notice("Table {$this->_tableName} has been created");
    }

    public function down()
    {
        if ($this->table($this->_tablePrefix)->exists()) {
            $this->table($this->_tablePrefix)->drop();
            return Log::info("Table {$this->_tableName} has been dropped");
        }

        return Log::warning("Table {$this->_tableName} does not exists");
    }

}
 

如果要运行迁移,则需要运行下一个命令:

bin/cake migrations migrate 到创建表(-s)。

如果要回滚:

bin/cake migrations rollback - 将恢复上次迁移,其中存在drop() 函数

bin/cake migrations (-t|--target) all - 将恢复所有迁移,其中存在drop() 函数

建立第一个'Hello World!'使用CakePHP 3.x进行应用(简介。第1部分)

CakePHP 3.x能够bake controllersmodelsviews 和其他框架定义的对象。

注意 :如果您对Laravel 框架有过一些经验,那么artisan 组件就像bake

bake 应用程序位于bin 文件夹中;以下是一些可用的命令:

  • bin/cake bake shell %shellName% - 来烘焙ShellClass
  • bin/cake bake controller %controllerName% - 烘焙Controller类
  • bin/cake bake model %modelName% - 烘焙Model + Entity Class
  • bin/cake bake view %viewName% - 烘焙View模板
  • bin/cake bake all %className% - 烘焙Controller,Model + Entity,View for developer。

注意 :如果数据库中没有表,则无法bake model

注意 :如果bake all 组件,您将获得具有预定义CRUD 操作的Controllers

安装Cakephp 3.X

要求:

  • PHP 5.6.0或更高版本的mbstring PHP扩展(默认在WAMP / XAMPP中工作,如果没有则启用它)
  • intl PHP扩展(在WAMP / XAMPP中可用,您必须启用它
    来自php.ini)
  • CakePHP将在各种Web服务器上运行,例如nginx,
  • LightHTTPD或Microsoft IIS。

在开始之前,您应该确保您的PHP版本是最新的:

php -v
 

使用Composer安装Cakephp 3 Framework,

Composer是官方支持的安装方法,因此下载composer, Composer(Windows / Linux / Mac)

运行此命令以安装cakephp,

php composer.phar create-project --prefer-dist cakephp/app my_app_name
 

一旦Composer完成下载应用程序框架和核心CakePHP库,您就应该通过Composer安装一个正常运行的CakePHP应用程序。请务必将composer.json和composer.lock文件与其余源代码保持一致。

或者按照这种最简单的方式安装cakephp

按照下面的步骤,

  1. 转到这个Git存储库
  2. 下载cakeDC /烤箱,便于安装
  3. 解压缩LOCALHOST中的zip文件
  4. 授予该文件夹777权限
  5. 运行文件oven.php(在文件夹中可用)
  6. 将打开一个包含大量选项的页面,根据您的喜好选择选项
  7. 点击图片然后坐下。您的项目将在几分钟内安装完毕

执行:

bin/cake server
 

默认情况下,如果没有提供任何参数,这将在http:// localhost:8765 /中为您的应用程序提供服务。

在您的浏览器http://example.com/http:// localhost:8765 /上启动它 。此时,您将看到CakePHP的默认主页,并显示一条消息,告诉您当前数据库连接的状态,并为第一个应用程序做好准备。

有关安装和设置的更多详细信息,请参阅Cakephp 3.X安装

在启用了PHP 7和SELinux的CentOS 7上安装CakePHP 3.4

这就是我在新安装的最小CentOS 7上安装CakePHP所做的

  • 在VirtualBox中安装了CentOS-7-x86_64-Minimal-1611.iso,两个网络接口:第一个NAT,第二个仅限主机
  • 在/ etc / sysconfig / network-scripts / ifcfg-enp0s3中设置ONBOOT = yes
  • 重启
  • 百胜更新
  • yum install net-tools(获取ifconfig和netstat)
  • yum install wget
  • yum install yum-utils
  • wget -q http://rpms.remirepo.net/enterprise/remi-release-7.rpm
  • wget -q https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
  • rpm -Uvh remi-release-7.rpm epel-release-latest-7.noarch.rpm
  • yum-config-manager --enable remi-php71
  • yum安装php
  • systemctl启用httpd
  • systemctl启动httpd
  • firewall-cmd --permanent --zone = public --add-service = http
  • firewall-cmd --permanent --zone = public --add-service = https
  • firewall-cmd --reload
  • yum安装httpd mariadb-server mariadb php phpmyadmin
  • systemctl启动mariadb
  • systemctl启用mariadb
  • systemctl重启httpd
  • yum install php-mbstring php-intl
  • mysql_secure_installation
  • curl -s https://getcomposer.org/installer | PHP
  • cd / var / www / html /
  • php composer.phar create-project --prefer-dist cakephp / app MyApp
  • chown apache:-R MyApp /
  • 创建数据库:
# mysql -u root -p
Enter password:

mysql> CREATE DATABASE mydb;
mysql> GRANT ALL ON mydb.* to 'myuser'@'localhost' IDENTIFIED BY '_password_';
mysql> FLUSH PRIVILEGES;
mysql> quit
 
  • 使用内容创建文件/etc/httpd/conf.d/my_app.conf:
<VirtualHost *:80>
    ServerAdmin root@localhost
    ServerName cakephp.myapp.net
    DocumentRoot /var/www/html/MyApp
    <Directory /var/www/html/MyApp>
      Allowoverride All
    </Directory>
</VirtualHost>
 
  • cd / var / www / html / secure_logging; chcon -Rv --type = httpd_user_content_rw_t tmp

  • 触摸/ .autorelabel;重启

  • 在我的主机上我编辑/ etc / hosts并输入行(192.168.56.101是我的VM的host-only-ip-address) 192.168.56.101 cakephp.myapp.net

设置项目

首先,您应该使用mysqlphpMyAdminHeidiSQL 或其他工具创建数据库以使用数据库并让用户创建新数据库。

在该过程之后,您应该提供对项目数据库的访问。

您需要进入文件/path/to/your/project/config/app.php ,然后查找Datasources default 。在该阵列中,您需要更改localhost (按需), userpassworddatabase

o到您的浏览器和刷新页面。数据库问题应该消失并在左侧显示Green Tick 号。

完成!你的第一个项目已经成立!