2017-03-16 156 views
1

我想在我的控制器中加載我的模型。該模型不會與數據庫中的表關聯,因此可能無法關注CakePHP的ORM。CakePHP:在控制器中加載模型

我已經目前下面的代碼(這是我的模型):

<?php 
namespace App\Model\Json; 

use Cake\Filesystem\File; 

class Processes 
{ 

     public static function getData() 
     { 

      $file = new File('process_data.json'); 
      $json = $file->read(true, 'r'); 

      $jsonstd = json_decode($json); 

      // remove STD classes 
      $json2array = json_decode(json_encode($jsonstd), true); 

      $cpu = array(); 

      foreach ($json2array as $key => $row) 
      { 
       $cpu[$key] = $row['cpu_usage_precent']; 
      } 
      array_multisort($cpu, SORT_DESC, $json2array); 
      // return data 
      return $json2array; 
     } 
} 

我打電話,通過下面的代碼模型(控制器):

$json2array = $this->Processes->getJson(); 

$this->set('data', $json2array); 

我不能以某種方式在我的控制器中調用它。我不斷收到以下錯誤:

Some of the Table objects in your application were created by instantiating "Cake\ORM\Table" instead of any other specific subclass.

Please try correcting the issue for the following table aliases:

Processes

+0

沒有一個CakePHP的用戶,但我希望'AppModel'是與ORM一個CakePHP的類。因爲你的班級沒有使用orm,所以''AppModel'不是固有的' – Steve

+0

你是怎麼在你的控制器中調用它的?如果你使用'loadModel',不要。加載Table類,這不是一個表。 – ahoffner

+0

我不會通過'loadModel'加載它,而是通過'$ this-> Processes',這很可能因爲它與ORM相關而不起作用。 – h0sfx0

回答

0

下面是一個例子,如何訪問Model沒有CakePHP ORMCakePHP 3.x

在型號:Processes

In the file /path_to/src/Model/Table/Processes.php

namespace App\Model\Table; #Define the namespace 

use Cake\Filesystem\File; 

class Processes{ 
    public static function getData(){ 
     /*Your codes here*/ 
    } 
} 

在控制器:Bookmarks

In the file /path_to/src/Controller/BookmarksController.php

namespace App\Controller; 

use App\Model\Table\Processes; #Using PSR-4 Auto loading 
use App\Controller\AppController; 

class BookmarksController extends AppController{ 
    public function tags(){ 
     $data = Processes::getData(); #Now you can assess Data 
    } 
} 

Here is the details about Auto loading with PSR-4

相關問題