cakephp3 linkでの画面遷移

<a href= "<?= $this->url->build(['action'=>'qaaResult'])?>" class="btn btn-danger">
     終了する
</a>

で実装できる

自作helperの実装

viewに重複のあるチンパンコード書きたくないよぉ…って時、
helperに記述してview側で呼び出すようにしたい。

  1. app/src/View/Helper にhelperを作る。
    作成ファイルはQaaHelper.phpで作成。

    <?php
    
    namespace App\View\Helper;
    use Cake\View\Helper;
    
    class QaaHelper extends Helper
    {
        //作りたいメソッド記入
        function viewTextImg()
        {
            //処理を記入
            print("helperできてるよ ルナだよ。");
        }
    }
    

  2. Controller側でhelperの宣言をしておく。

    <?php
    
    class StudentController extends AppController
    {
        public function initialize()
        {
            //helperの宣言 QaaHelperを指定したい場合、頭小文字でHelperを外した'qaa'を渡してやる
            $helpers = array('qaa');
            parent::initialize();
        }
    //省略

  3. viewでhelperを呼べるようになる。

    <?= $this -> qaa -> viewTextImg() ?>
    


ルナちゃんが呼び出される かわいい

・参考
okisanjp.hatenablog.jp

間違えてpushしてしまった!

  • SourceTreeを開く
  • 戻りたいブランチを右クリック
  • 現在のブランチをこのコミットまでをリセット(今回はmixed アップロードしたくないファイルをアップロードした)
  • ローカルは変更前まで移動
  • それをリモートに反映するためpush
  • (pushは強制pushを行った 間違えたpushに対してのcommitを打ち消してcomittするため)
  • force push はオプションのgit から操作可能にできる

安易なプッシュはやめようね!

routing あれこれ

/config/routes.php

<?php
$routes->connect
    //ルート プレースホルダー(:)URL部分のバリデーションができる
    ('/student/qaaQuestion/:question_num/:count',
    //コントローラーとアクションの指定
    ['controller' =>'Login', 'action' => 'index']);
    //バリデーションの指定 question_num は数字のみ受付 countは3桁までの数字のみを受け付ける
    ['question_num' => '\d+','count' => '\d{1,3}']
);
?>
  • qaa_select_genre.ctp
<?php
//フォーム生成時点でプレースホルダー部分の値を指定する
echo $this-> Form -> create('', ['type' => 'post',
    'url' => ['action' => 'qaaQuestion','question_num' => 1,'count' => 0 ]]);
?>

jqueryでチェックボックスのバリデーションを作る

  • sample.ctp
<?= $this -> Form -> create('',['type' => 'get','url' => ['action' => 'action']])?>
<?= $this -> Form -> checkbox("select.check1",array('class'=> 'select')) ?>りんご 
<?= $this -> Form -> checkbox("select.check2",array('class'=> 'select')) ?>バナナ 
<?= $this -> Form -> checkbox("select.check3",array('class'=> 'select')) ?>みかん
<?= $this -> Form -> button('submit',array('type' => 'submit')) ?>
<?= $this -> Form - > end(); ?>
  • sample.js
$(function() {
    "use strict";
    $('form').submit(function() {
        //少なくとも1つはチェックがあるかどうか 使いたいフォームのクラス名を指定
        if($('.select:checked').val() !== '1' ) {
            // 警告を出す
            window.alert('ジャンルを選択してください。');
            // 処理を中断 遷移しない
            return false;
        }
    //配列で取得する場合はつける
    }).get();
});

qiita.com

Git ブックマーク

qiita.com

qiita.com

  • commitの履歴の閲覧

Git - コミット履歴の閲覧

weble.org

 

コントローラーとビューテンプレートとレイアウトとエレメント

すーぐわからなくなるので整理

 

  • コントローラー

指定されたアドレスにアクセスした際に実行する処理

 

例えば

  • initialize()
  1. レイアウトの指定(何も記述しないとdefault.ctpが適応される)
  2. setメソッドでエレメントにキーと値を送る
  3. autolayout
  • それぞれのアクションに対しての制御
  • ビューテンプレート

コントローラーのアクションに対応

個別のページごとの内容を書くのがここ???

  • レイアウト

レイアウトの設定をする(迫真)

骨組みを設定しておいて内容の記述はエレメント書いて呼び出すようにしておくと編集したり使い回しがしやすそう

 

  • head

<?= $this -> charset();?>

<?= $this -> Html -> css('CSSファイル'); ?>

scriptファイルも同様に

  • body

div やらでレイアウトを記述しとく

あとはエレメントに任せる

  • 引数ない場合

<?= $this -> element(folder\element.ctp) ?>

  • 引数ある場合

<?= $this -> element(folder\element.ctp, ['キー(Controllerに書いたやつ)' => $変数]) ?>

あとコントローラーのinitialize() にsetメソッド書いとく

 

  • エレメント

レイアウトに内容書かずにヘッダーとか、ぼでぃとかの部分ごとに編集したい場合に使用

 

メモってて分からなくなったので後修正