0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

CakePHP上でJavascriptによるタグ機能実装

Last updated at Posted at 2020-04-28

#今日やること

  • tag表示(サーバからtagのデータを取得してtag一覧表示)

    • tagsを取得する
  • javascriptで追加tagのデータをサーバに送信

  • tagの送信が終わった後に、コールバックで(tagを再度表示)

#CakePHP2でjavascript

  • jshelper(非推奨 CakePHP3からはなくなる)
  • htmlヘルパーで書く方法 ```HtmlHelper::script(mixed $url, mixed $options)¶

    * webrootにかく
    * 直接書く


#htmlヘルパー js

* ```$this->Html->scriptStart(array('inline' => false)); $this->Html->scriptEnd(array('inline' => false));```
    * javascriptだけで書くの難しいっぽい。調べ不足
* jsを外部定義する
    * javascriptだけで書けそう



#tag表示
###done
* jsでfor文を回して、データ数に応じたセレクトボックスを作成(仮データ)

document.write('');



* json_encodeで実際のデータでタグ表示 http://maa123lq.hatenablog.com/entry/2015/10/10/191809



こんな感じで、javascriptでhtmlを書きたいときは、文字列としてwriteなので書き込む。

document.write('' + tags[i] + '');


###tagがついているものをチェック済みとして表示する

以下のように条件にマッチする場合、inputタグの表示を変えるようにした。

if(Object.values(selected_json).indexOf(String(i))>=0){
document.write('');
}else{
document.write('');
}



###学びメモ
**PHPからJavaScriptに配列を渡す**
json形式に変換した上で受け渡しをする。
   https://qiita.com/tksnino/items/c8c542f1f0a7bf9d6031

* セレクトボックスは、cakephpのformヘルパーのcreateとendの間に記述した。こうすることで、formとしてrequest->dataに保存されサーバに送ることができる。結局、formヘルパーもサーバ上でhtmlに変換されているから、htmlでクライアント側でhtmlを追加しても同じように表示できる。
* オブジェクトは、値チェックを直接することが難しそう。今回も配列になおしてindexOfで判定している。


0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?