好了,解決了PHP的嚴格標準的錯誤,我只是分裂路由到兩個方法如下:
routes.php文件
Route::get('devices/{deviceId}/action/{actionName}/{actionParam?}', '[email protected]');
Route::get('devices', '[email protected]');
Route::get('rooms', '[email protected]');
//Route::get('action_ret', '[email protected]_ret');
Route::get('system', '[email protected]');
Route::get('/', '[email protected]');
DomoticzController.php
/**
* Call for an action on the device identified by $deviceId.
* @return string Json formated action status.
*/
public function device($deviceId, $actionName, $actionParam = null)
{
$client = $this->getClient();
$request = $client->getClient()->createRequest('GET', get_url("json.htm?type=command¶m={$actionName}&idx={$deviceId}}&switchcmd=$actionParam"));
$response = $request->send();
$input = $response->json();
// convert to app format
$output = array('success' => ('OK' === $input['status'] ? true : false), 'errormsg' => ('ERR' === $input['status'] ? 'An error occured' : ''));
return Response::json($output);
}
/**
* Retrieve the list of the available devices.
* @return string Json formatted devices list.
*/
public function devices()
{
$client = $this->getClient();
$request = $client->getClient()->createRequest('GET', get_url('json.htm?type=devices&used=true'));
$response = $request->send();
$input = $response->json();
// convert to app format
$output = new stdClass();
$output->devices = array();
foreach ($input['result'] as $device) {
$output->devices[] = array (
'id' => $device['idx'],
'name' => $device['Name'],
'type' => 'DevSwitch',
'room' => null,
'params' => array(),
);
}
return Response::json($output);
}
也許有解決這個更好的方法,我會很高興聽到這個消息。
這應該工作,你如何試圖檢索參數?嘗試翻轉兩條路線的順序,當我在過去做過類似的事情時,接受參數的路線總是在沒有路線的路線之後。 – Jeemusu
好吧,我找到了一種方法使其工作,問題是我無法將兩個路由重定向到相同的方法,所以我只使用了2種方法(設備和設備) – kitensei
您可以將多個路由重定向到單個方法。如果你擴展你的問題,有人可能會幫助你。解釋當你嘗試訪問帶有id的路由時會發生什麼,這將是一個好的開始,所以發佈你的'devices'方法。 – Jeemusu