cakephp3.xプラグインを作ろう

2016年8月22日更新 view: 59 view
http://meglog.net/wp-content/uploads/20120118-1.jpg

cakephp3でプラグインを作るには?

cakephp3ではcomposerを使って作る方法がベスト。
簡単にできるのでまずは、作成と削除を紹介。

/bin/cake bake plugin ContactManager

設問は全てy。
これでContactManagerが完成。

完成後はすぐに
パーミッションを変更。
でないとアップロードとかできなくなる。

chmod -R 777 ContactManager

これで完成。

削除

vim composer.json

で該当行を削除しましょう。

"ContactManager\\": "./plugins/ContactManager/src"
"ContactManager\\Test\\": "./plugins/ContactManager/tests"
comopser update

パスが変わっているのでローカルの bootstrap.php をアップロード。

これで削除できる。

スポンサードリンク

実際に作っていこう

今回はプラグイン内の
・コントローラー
・コンポーネント
・シェルスクリプト

の3点を作ってみます。

/plugins/Okws/src/Controller/HogesController.php

<?php

namespace Okws\Controller;
use Okws\Controller\AppController;

class HogesController extends AppController
{

public function index()
{
echo "hogera";
exit;
//...
}
}

・routes.phpの設定

Router::plugin(
'Okws',
['path' => '/okws'],
function ($routes) {
$routes->fallbacks('DashedRoute');
}
);

これで
your.com/okws/hoges

にアクセスすれば
hogera と表示される。

コンポーネントを作ってみよう

plugins/Okws/src/Controller/Component/YumeComponent.php

<?php
namespace Okws\Controller\Component;
use Cake\Controller\Component;

class YumeComponent extends Component
{
public function initialize(array $config) {
}

public function hoge()
{
return "せいこう!";
}

}

\src\Controller\DefaultsController.php

class DefaultsController extends AppController
{

// あなたのコントローラで下記のように呼び出す
public function initialize()
{
parent::initialize();
$this->loadComponent('OKws.Yume');
}

public function index()
{
$data = $this->Yume->hoge();
echo $data;
exit;
}
}

せいこうと表示される。

つづいてsh。
メール遅延送信するのに作っておくと便利かも。

plugins\Okws\src\Shell\SendMailShell.php

<?php

namespace Okws\Shell;

use Cake\Console\Shell;
use Cake\Mailer\Email;

class SendMailShell extends Shell
{

public function main(){
}

public function send()
{
//そのまま送る
$email = new Email('default');
$email->from(['your@hoge.com' => 'ウェブサービス'])
->to('to@hogeman.net')
->subject('ひでちゃんタイトル')
->send('本文');
}

}

これで
適当なコントローラーから

$res = exec('/opt/remi/php70/root/usr/bin/php -c /etc/opt/remi/php70/php.ini '.ROOT.'/bin/cake.php okws.send_mail send > /dev/null &');

で非同期でメールを送信できる。

<?php

namespace Okws\Controller\Component;

use Cake\Controller\Component;

//vendorを使う
use Abraham\TwitterOAuth\TwitterOAuth;
use Cake\Core\Configure;
use Cake\ORM\TableRegistry;





class YumeComponent extends Component
{
public $components = ['Cookie'];

public function initialize(array $config) {
$this->Users = TableRegistry::get("Users");
$this->Controller = $this->_registry->getController();
}

public function hoge()
{
// vendorをnewできる
$connection = new TwitterOAuth(Configure::read('Signup.twitter.consumerKey'),Configure::read('Signup.twitter.consumerSecret'));
$request_token = $connection->oauth("oauth/request_token",
["oauth_callback" => Configure::read('Signup.twitter.callbackUrl')]
);

}

}
スポンサードリンク

関連記事

関連カテゴリ