好了,解决了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