質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.46%

  • CakePHP

    2558questions

    CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

  • Eclipse

    1971questions

    Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

eclipseのCakePHP3のコード補完について

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 2,559

otagroove

score 24

CakePHPの初心者です。 最近CakePHP3の勉強を始めたのですが、eclipseでCakePHP3のmodelのコードが補完されず、困っています。

eclipse上の関連がうまく行ってないのが原因だと感じたのですが、 どのように対応すれば良いのかがわからず、困っています。

一応下記サイトを参考に「AppController」クラスに@propertyを追加しましたが、メソッドを読み込んでくれません。

サイト:http://y-stream.blogspot.jp/2013/07/cakephp-eclipse-codehint.html

お手数おかけいたしますが、ご教示いただければ幸いです。 よろしくお願い致します。

補足

1.開発環境

  • eclipse4.5.1
  • CakePHP3.1.5

2.モデル情報

Modelは自動生成したモデル 使用コマンド:bin\cake bake model persons なお、生成されてソースは下記に添付いたします。

今回コードを補完したいのはPersonsTableクラスに入っている「newEntity」になります。 なお、コントローラークラスでは下記のように呼び出しております。

class PersonsController extends AppController {
    public function add() {
        $person = $this->Persons->newEntity ();
    }
}

このCakePHPでインスタンス化されたPersonsTableクラスの「newEntity」というメソッドのコードを保管したいです。

お手数おかけいたしますが、何卒よろしくお願い致します。

・生成されたテーブルクラス

<?php

namespace App\Model\Table;

use App\Model\Entity\Person;
use Cake\ORM\Query;
use Cake\ORM\RulesChecker;
use Cake\ORM\Table;
use Cake\Validation\Validator;

/**
 * Persons Model
 */
class PersonsTable extends Table {

    /**
     * Initialize method
     *
     * @param array $config
     *            The configuration for the Table.
     * @return void
     */
    public function initialize(array $config) {
        parent::initialize ($config);

        $this->table ('persons');
        $this->displayField ('name');
        $this->primaryKey ('id');
    }

    /**
     * Default validation rules.
     *
     * @param \Cake\Validation\Validator $validator
     *            Validator instance.
     * @return \Cake\Validation\Validator
     */
    public function validationDefault(Validator $validator) {
        $validator->add ('id', 'valid', [
                'rule' => 'numeric' ])->allowEmpty ('id', 'create');

        $validator->requirePresence ('name', 'create')->notEmpty ('name');

        $validator->add ('age', 'valid', [
                'rule' => 'numeric' ])->allowEmpty ('age');

        $validator->allowEmpty ('mail');

        return $validator;
    }
}

・生成されたEntitiyクラス

<?php

namespace App\Model\Entity;

use Cake\ORM\Entity;

/**
 * Person Entity.
 *
 * @property int $id
 * @property string $name
 * @property int $age
 * @property string $mail
 */
class Person extends Entity {

    /**
     * Fields that can be mass assigned using newEntity() or patchEntity().
     *
     * Note that when '*' is set to true, this allows all unspecified fields to
     * be mass assigned. For security purposes, it is advised to set '*' to false
     * (or remove it), and explicitly make individual fields accessible as needed.
     *
     * @var array
     */
    protected $_accessible = [
            '*' => true,
            'id' => false ];
}
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

手元の環境で試してみましたが、うまく補完されました
環境は、

  • CakePHP3.0.11
  • Eclipse4.3.2
    です
    ちなみに、controller側にmodelの読込の定義は記述していますか?
//Model
class hoge extends AppModel {
    public function test001 () {
        return 0;
    }
}

//Controller
class HogeController extends AppController {
    var $uses = array('hoge');  // Modelクラスの読込

    public function test () {
        $this->hoge->test001();
    }
}

追記:
以下のようにAppControllerのヘッダ部を設定することで、補完ができることを確認しました

/**
 * Application Controller
 *
 * Add your application-wide methods in the class below, your controllers
 * will inherit them.
 *
 * @link http://book.cakephp.org/3.0/en/controllers.html#the-app-controller
 * @property App\Model\Entity\person $Person
 * @property App\Model\Table\PersonsTable $Persons
 * 
 */
class AppController extends Controller
{

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/12/15 16:38

    ご解答ありがとうございます!
    こちらで、確かにModelのメソッドのコードが保管されることが確認できました!
    ありがとうございます。

    ただ、自分の質問の仕方が悪く今回わからずに困っている部分とは異なってしました。
    申し訳ございません。。。

    もしよろしければ補足説明を追記いたしましたのでご確認いただけましたら幸いでございます。

    キャンセル

  • 2015/12/15 17:36

    回答を追記しましたので、ご確認ください。

    キャンセル

  • 2015/12/16 09:58

    ありがとうございます!
    無事にコードを保管することができました!!

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.46%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • CakePHP

    2558questions

    CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

  • Eclipse

    1971questions

    Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。