1

私はcakephpが初めてです。ページとカテゴリの 2 つのコントローラーで共有される Rest というクラスがあります。

したがって、AppController でクラスのインスタンスを作成することを考えました。

class AppController extends Controller {
    public $rest;


    public function DoRest() {
        require 'Component/Rest.php';

        if(!isset($this->rest))
        $this -> rest = new Rest();

        return $this -> rest;
    }
}

次に、categoriesController でアクセスできます。

public function index() 
    {
        if ($this->request->is('requested')) {
            return $this -> DoRest() -> getCategories();
        } else {
            $this -> set('categories', $this -> DoRest() -> getCategories());
        }
    }

そしてページコントローラーで:

public function category() {

        $this -> set('items',$this -> DoRest() -> getCategoryById($this->request->query['id']));
    }

category.ctp 内で、次の方法でカテゴリにアクセスできます。

$categories = $this->requestAction('categories/index');

ただし、今はこのエラーが発生しています: Error: Cannot redeclare class Rest

私は何を間違えましたか?

4

2 に答える 2

1

You’ve a couple of issues. First, you’re not including files the “Cake” way; and second you’re not naming components the “Cake” way either.

Components should be suffixed as such. So your Rest component should look like this:

<?php
class RestComponent extends Component {
}

Secondly, components should then be loaded in your controller via the relavant property:

<?php
class YourController extends AppControler {
    public $components = array('Rest');
}

Everything should then work. However, I’d question your need to create a Rest component at all. CakePHP has built-in REST handling, and also a HTTP component for making requests to third-party services via HTTP.

于 2013-05-29T11:43:12.010 に答える