2017-11-03 2 views
0

In CakePHP 3.3 I Aussage wie diese in der Steuerung verwenden:cakephp-3.4 unveränderliche http Anfrage api API

$this->request->data = array_merge($this->request->query,$this->request->data); 

Wie kann ich den gleichen Effekt mit neuem unveränderlichem http \ Anfrage api API in Kuchen erreichen 3.4/3.5?

+3

Sie dürfen die Anforderungsdaten nicht ändern, da dies als schlechte Praxis angesehen wird. Änderungen in CakePHP 3.4 verhindern das nur. Siehe [CakePHP 3.4, So ändern Sie die Daten programmatisch] (http://discourse.cakephp.org/t/cakephp-3-4-how-to-change-request-data-programmatically/2120). Wenn Sie uns Ihren speziellen Anwendungsfall mitteilen, kann möglicherweise eine Problemumgehung bereitgestellt werden. –

Antwort

1

Es ist also ziemlich übel, die Anfrage zu überschreiben (oder sogar anzuhängen), da dies der Client gesendet hat - wenn Sie wirklich noch so gehen wollen, könnte man Reflektion verwenden, um den Wert festzulegen ... Habe ich erwähnt, dass das eine schlechte Praxis ist?

Wie .. wirklich schlechte Praxis :)

$reflectionClass = new ReflectionObject($this->request); 
$reflectionProperty = $reflectionClass->getProperty('data'); 
$reflectionProperty->setAccessible(true); 
$reflectionProperty->setValue($this->request, -YourNewArray-); 

Ich denke, ich muss das nicht wiederholen, was bereits gesagt wurde, aber wenn es das Problem der Modernisierung zwischen den Versionen spart .. diese Macht repariere es.