baserCMS
ver5系が登場して1年以上経過しておりますが、
今までbaserCMS ver4系を使用していた方で、5系になって仕様が変わってハマってしまうポイントも結構あるので、
私自身がこの一年で経験した、知っていれば簡単なのに、知らなかったがためにハマったポイントをいくつかこ゚条介します。
(ごくごく初歩的なハマりどころなので備忘録として残しておきます。)
現在のページのURL取得方法
初歩の初歩ですが、忘れていると意外とハマるので備忘録として
■ baserCMS 4系テーマ内
$this->request->here;
■ baserCMS 5系テーマ内
$this->getRequest()->getAttribute('here');
■■ 解説
baserCMSの4系の$this->request->here
では、クエリはつきません。
5系で
$this->request->getRequestTarget();
でURLを取得するとクエリがついてしまうため、思わぬバグを生みます。
(逆にクエリが必要なときはこちらを使用すれば、クエリ付きのURLが取得できます)
現在いるページのパスを取得する
■ baserCMS 4系テーマ内
$this->request->params['pass'];
■ baserCMS 5系(場所によって少し変わる)
テンプレート内
$this->getRequest()->getAttribute('params')['pass'];
Helper内
$this->getView()->getRequest()->getAttribute('params')['pass'];
現在いるページなどのコンテンツ情報を取得する
コンテンツから必要な情報を抜き出して使いたいときに、使用します。
■ baserCMS 4系テーマ内
$content = $this->request->params['Content'];
var_dump($content);
■ baserCMS 5系テーマ内
$content = $this->BcBaser->getCurrentContent();
debug($content);
ブログシングルページなどでタグ一覧を配列で取得する。
■ baserCMS 4系テーマ内
$blogtags = hash::extract($post['BlogTag'], '{n}.name');
■ baserCMS 5系テーマ内
$blogtagCollection = collection($post->blog_tags);
$blogtags = $blogtagCollection->extract('name')->toList();
アップロードファイル関連の情報取得
結構面倒くさいし、知らないとできないのでメモ
$data = $this->getRequest()->getData('XXXXXX');
などで$dataにアップロードデータを取得した場合
■ baserCMS4系
ファイル名 : $data['file']['name']
ファイル形式 : $data['file']['type']
■ baserCMS5系
ファイル名 : $data['file']->getClientFilename()
ファイル形式 : $data['file']->getclientMediaType()
※ 補足
ファイルサイズ取得 : $data['file']->getSize();
など他の情報も取得できます。
意外とハマるディレクトリ名の違い
element
■ baserCMS4系
Elements/widgets/
■ baserCMS5系
element/widget/
widgets → widget は、BcAddonMigratorを使っても変換されないので、使用している場合は必ず手動でディレクトリ名を変更してください。
error
■ baserCMS4系
Errors/
■ baserCMS5系
error/
こちらも現在はまだ、BcAddonMigratorを使っても変換されないので、使用している場合は必ず手動でディレクトリ名を変更してください。
注意
一部情報が古くなっている場合がございます。
その場合は、ご指摘ください。