WebプログラミングV

 目次へ 前へ 次へ 

2016/2/12 久米

VCakePHP

7. Composerとプラグインインストール

7.1 Composerインストール

ComposerとはPHPのライブラリ(パッケージとも言う)をプロジェクト単位に管理するツールです。
的確に必要なライブラリをインストールしたり、アップデートしたりできます。(主にgitからダウンロードされる)
プロジェクト単位なので、OS全体に反映はされません。これはメリットの方が大きいです。

以下アドミンアカウントでログインが必要

 

7.2 CakePHP本体インストール

第1章のところでも紹介したが、CakePHP3から標準的インストールはComposerを使用するインストールになった。
実際にComposerを使用してインストールしてみる。

今回はcaketest9という新たなプロジェクト(アプリケーション)を作ってみる。
あとでもいいが、phpMyAdminにてcaketest9という名前のDBを作っておく。

コマンドプロンプトで、下記を実行

C:\Users\kume>cd C:\xampp\htdocs
C:\xampp\htdocs>composer create-project --prefer-dist cakephp/app web3/caketest9

最後の方でSet Folder Permissions ? (Default to Y) [Y,n]?と聞いてくるがそのままEnter

これで本体インストール完了。

 

7.3 プラグインをインストール

画像アップロードプラグイン cakemanager/cakephp-utils をインストールする

C:\xampp\htdocs\web3\caketest9のフォルダにあるcomposer.jsonに
インストールしたいプラグインを記述。
下記青字を追加 カンマを忘れずに。

{
    "name": "cakephp/app",
    "description": "CakePHP skeleton app",
    "homepage": "http://cakephp.org",
    "type": "project",
    "license": "MIT",
    "require": {
        "php": ">=5.4.16",
        "cakephp/cakephp": "~3.1",
        "mobiledetect/mobiledetectlib": "2.*",
        "cakephp/migrations": "~1.0",
        "cakephp/plugin-installer": "*",
        "cakemanager/cakephp-utils": "dev-master"
    },
    "require-dev": {
        "psy/psysh": "@stable",
        "cakephp/debug_kit": "~3.2",

 

コマンドプロンプトで、下記を実行

C:\Users\kume>cd C:\xampp\htdocs\web3\caketest9

C:\xampp\htdocs\web3\caketest9>composer update
You are running composer with xdebug enabled. This has a major impact on runtime
 performance. See https://getcomposer.org/xdebug
Loading composer repositories with package information
Updating dependencies (including require-dev)

  - Installing cakemanager/cakephp-utils (dev-master e9ca228)
    Cloning e9ca228ccfe3bb1fe756a99d408838500e1c8002
    Failed to download cakemanager/cakephp-utils from source: Failed to clone gi
t@github.com:cakemanager/cakephp-utils.git, git was not found, check that it is
installed and in your PATH env.

'git' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

    Now trying to download from dist
  - Installing cakemanager/cakephp-utils (dev-master e9ca228)
    Loading from cache

Writing lock file
Generating autoload files
> Cake\Composer\Installer\PluginInstaller::postAutoloadDump

C:\xampp\htdocs\web3\caketest>

C:\xampp\htdocs\web3\caketest9\vendorフォルダの中に
\cakemanager\cakephp-utilsがインストールされているのを確認

C:\xampp\htdocs\web3\caketest2\config\bootstrap.php に下記を記述。プラグインロード命令。

//Plugin::loadAll();
Plugin::load('Utils');

これでプラグインcakemanager/cakephp-utilsインストール完了。

 

7.3 猫画像掲示板

上記でインストールした画像投稿プラグインを使用し、画像掲示板を作ってみる。

まず、下記のようなテーブル作成

CREATE TABLE IF NOT EXISTS `neko_gazos` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(64) NOT NULL,
`photo` varchar(255) DEFAULT NULL,
`photo_url` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

 

  ファイル コード例 備考
C src>Controller>
NekoGazosController.php
NekoChansを改良
indexとaddのみ残して、indexの中を下記のように追加変更。

$nekoGazos = $this->NekoGazos->find()->order(['id'=>'Desc']);
 
M src>Model>Table>
NekoGazosTable.php
<?php
namespace App\Model\Table;
use Cake\ORM\Table;

class NekoGazosTable extends Table {
    
    public function initialize(array $config) {
        $this->primaryKey('id');
        $this->addBehavior('Utils.Uploadable', [	    
            'photo' => [
		'field' => 'id',
		'path' => '{ROOT}{DS}{WEBROOT}{DS}uploads{DS}{model}{DS}',
		'fileName' => '{field}.{extension}'
		,'fields' => [
		    'url' => 'photo_url',
		    'filePath' => 'photo'
		],
            ],
        ]);
    }
}
 
V
その1
src>Template>NekoGazos>
index.ctp
<h1>猫画像</h1>
<p><?= $this->Html->link('画像投稿', '/neko-gazos/add/') ?></p>
<div>
<?php foreach($nekoGazos as $nekoGazo): ?>
    <?= $this->Html->image($nekoGazo->photo_url, ['alt' => h($nekoGazo->title), 'width' => 200]) ?>
<?php endforeach; ?>
</div>
 
V
その2
src>Template>NekoGazos>
add.ctp
<?php echo $this->Form->create('NekoGazo', ['type' => 'file']); ?>
    <?php echo $this->Form->input('title'); ?>
    <?php echo $this->Form->input('photo', ['type' => 'file']); ?>
<?= $this->Form->button('投稿') ?>
<?php echo $this->Form->end(); ?>
 
  アクセス http://localhost/web3/caketest/neko-gazos/