2017-02-22 108 views
0

當我們開始我的項目的第二部分時。我們希望在項目的下半年開始之前先開始完成遷移過程。我對遷移過程有一些擔憂,並希望澄清我的疑惑。準備將CakePHP 3.4遷移到CakePHP 4.0

目前,在我的項目,我們使用以下

  1. 提到了很多,這些功能我們是否全部更換爲$這個 - >形式 - >輸入 [「說明」]到$ this-> Form->control ['description']?
  2. 當你提到Response :: download()會變成Response :: withDownload()。你的意思是我必須將$ this-> response-> download($ filename)更改爲$ this-> response-> WithDownload($ filename)?
  3. 我們在我們的Table.php中有這樣的代碼行$ this-> primaryKey('id'),並且您提到這是不推薦使用的列表的一部分,並替換爲getX()和setX()方法。你那是什麼意思?我希望你能給我一個例子。
  4. 下面的代碼在控制器中找到,我注意到你提到hydrate()(現在enableHydration()/ isHydrationEnabled())。我們需要做出什麼改變?

    $CustomersordersTable-> find()     
              -> select(['order_id'=>'Customerorders.order_id']) 
              -> where(['id IN' => $studentlist]) 
              -> hydrate(false) 
              -> toArray(); 
    
  5. 我也明白這 - $>請求 - >數據[ '身份證']已過時,我們需要被$ this->請求 - >的getData( 'ID')。然而,當添加細節時,現在我們不能爲這個$ this-> request-> getData('id')分配一個隨機的id值。我曾經在保存到表格之前用以下代碼指定一個隨機ID。

    $this->request->data['id'] = TableRegistry::get('Customers')->find('guid'); 
    

你有CakePHP的4.0暫定的發佈日期?

+3

CakePHP的4.0路線圖https://github.com/cakephp/cakephp/wiki/4.0-Roadmap – tarikul05

回答

2
  1. 只要您使用set方法來設置一個值,並獲得獲得的值。像setTable($ name)一樣。
  2. enableHydration()
  3. 請求數據不應該直接修改。不在3.4之前,不在之後。從請求中獲取數據,修改它,做任何你想要的事情。 3.4中的請求對象是immutable

CakePHP4沒有發佈日期,只是一個roadmap沒有任何日期。 CakePHP是由志願者開發的,因此人們有時間和心情去完成工作。貢獻是受歡迎的。 :)

+0

謝謝很多爲您的幫助! – SS86

0

5.

$guid = TableRegistry::get('Customers')->find('guid'); 
$newData = $this->request->withData('id', $guid); 

//獲取新的請求數據

$newData->getData('id'); 
+0

歡迎來到Stack Overflow!儘管您可能已經解決了此用戶的問題,但僅有代碼的答案對於未來出現此問題的用戶來說並不是很有幫助。請編輯您的答案,以解釋爲什麼您的代碼可以解決原始問題。 –