I am creating rest api using codeigniter and want to use function but after hit "http://localhost/codeigniter-rest-api-master/api/testing" showing me error
"404 page not found".Where i am wrong ?
here is my "application/config/routes.php"
$route['api'] = 'api/users/';
//api/users
$route['api/users'] = 'api/testing/testing/';
$route['api/users/format/json'] = 'api/testing/testing/format/json';
$route['api/users/format/xml'] = 'api/testing/testing/format/xml';
$route['api/users/format/html'] = 'api/testing/testing/format/html';
$route['api/users/format/csv'] = 'api/testing/users/format/csv';
$route['api/users.json'] = 'api/testing/testing.json';
$route['api/users.xml'] = 'api/testing/testing.xml';
$route['api/users.html'] = 'api/testing/testing.html';
$route['api/users.csv'] = 'api/testing/testing.csv';
here is my "application/controller/api/Users.php"
public function testing()
{
echo "hello world";
}
You don't have a api/testing route. Use something like this
$route['api/testing'] = 'api/users/testing/';
The route is folder/controller_class/function. I think you should read the guide.
This Answer would be helpful too.
Related
First I use pagination and I want to change to all in my Controller, but I got the error above.
This is what I tried :
$c = CarModel::all();
My code :
public function index()
{
//$c = CarModel::all(); //got error when use this
$c = CarModel::paginate(3);
return view('car.car',compact('c'));
}
I want to change to $c = CarModel::all(); but I got error.
Looks like you are using ->links() method in your "car.car" view, this method is only available when you use pagination
I have been looking for the help to configure SDK for my Allocator.
I have already followed the steps given in the documentation.
https://github.com/MyAllocator/myallocator-ota-php
From the above documentation I have installed myAllocator using composer and I can see MyAllocator directory inside vendor.
Moving further I tried to copy the code from MaReceiver.php to my controller but this does not work out.
I have also checked how to configure the facebook sdk but this also does not help me to get a good idea to work out with MyAllocator SDK.
Again now tried to created a separate module in zf2 but I did not get any success.
It would be really helpful if anyone can guide me of give me any reference for SDK configuration in zend framework 2.
Please find the code
$request = $this->getRequest();
if ($request->isPost()) {
$data = $request->getPost('id');
$propertyId = $request->getPost('pand_id');
$password = $data['pand_password'];
$guid = empty($data['guid'])? '' : $data['guid'];
$verb = empty($data['verb'])? 'SetupProperty' : $data['verb'];
$booking_id = empty($data['booking_id'])? '' : $data['booking_id'];
$myallocator_pid = empty($data['pid'])? '' : $data['pid'];
// Instantiate backend interface that implements MaInboundInterface
$interface = new MaInboundInterfaceStub();
$interface->mya_property_id = $myallocator_pid;
$interface->ota_property_id = $propertyId;
$interface->verb = $verb;
$interface->guid = $guid;
$interface->shared_secret = 'xxxx';
$interface->ota_regcode = $password;
$interface->booking_id = $booking_id;
$interface->mya_property_id = 'M not in else ';
$router = new \MyAllocator\phpsdkota\src\Api\Inbound\MaRouter($interface);
// Process request
$post_body = file_get_contents('php://input');
$post_body = json_encode($interface);
$response = $router->processRequest($post_body);
header('Content-Type: application/json');
echo json_encode($response);exit;
}
With the above code am successfully able to call the function and work perfectly fine with the value on interface object
But now the problem is that am not able to get the request parameter from MyAllocator
Working on codeigniter project.
Got stuck with routes.
I want to access en/company/login through en/login, so how do I define routes then?
Right now routes code looks like this:
// URI like '/en/about' -> use controller 'about'
$route['^(en|lv)/(.+)$'] = "$2";
// '/en', '/lv' URIs -> use default controller
$route['^(en|lv)$'] = $route['default_controller'];
$route['company/login'] = "login";
tried:
$route['^(en|lv)/company/login'] = "login";
Obviously, Im not getting something.
Can you help please?
Your problem is (i had the same) that this:
$route['^(en|lv)/(.+)$'] = "$2";
overrides your rule for:
$route['^(en|lv)/company/login'] = "login";
Try this:
$route['^(en|lv)\/(company)\/(.+)$'] = "login";
Maybe it should help you to override the first pattern
And if not, edit the first pattern to this:
$route['^(en|lv)\/(?!company).+$'] = "$2";
$route["(en|fr|gr)/(:any)/login"] = "login/index/$1";
--
public function index($company)
{
$language = strtolower($this->uri->rsegments[3]);
if(!in_array($language, ['en', 'fr'])){
// set a default language
// if the route does not provide a valid one
$language = 'en';
}
// Load the language file for the selected language
// for example english, language/en/en_lang.php
$this->lang->load($language, $language);
}
Thank you for your answer, but it seems that I didnt explain that
/company/ is controller and /login/ is "company" function. Your
solution wont work for me. :/
// The $route should contain the uri,
// you seem to have them mixed up.
// $route['uri'] = "controller/method"
$route['(en|lv)/login'] = 'company/login';
I have a website that contains a form that makes various SOAP requests at certain points. One of these requests gets a list of induction times returned and displays them to the user in order for them to pick one.
I am getting results returned fine from the SOAP service but unfortunately it seems to be not showing information correctly and even not displaying returned object keys at all.
I have liased with one of the devs at the SOAP end and he says the service is fine and spitting out the cirrect information. He has provided a screentshot:
Here is my code to pull call the method I need for this information:
public function getInductionTimes($options) {
$client = $this->createSoapRequest();
$inductionTimes = $client->FITinductionlist($options);
//die(print_r($inductionTimes));
return $inductionTimes;
}
private function createSoapRequest() {
$url = 'https://fitspace.m-cloudapps.com:444/FITSPACE/MHservice.asmx?WSDL';
$options["connection_timeout"] = 25;
$options["location"] = $url;
$options['trace'] = 1;
$options['style'] = SOAP_RPC;
$options['use'] = SOAP_ENCODED;
$client = new SoapClient($url, $options);
//die(print_R($client->__getFunctions()));
return $client;
}
As you can see I print_r the code right after I have received it to check what I am getting returned and it is this:
As you can see this IDdtstring field is getting completely ignored.
Does anyone have any ideas as to why this may be happening? Is it something to do with encoding? I can't seem to get anywhere on this issue!
Thanks
I was able to retrieve the fields correctly, including IDdtstring, using your basic code. Perhaps you are not sending the parameters correctly?
function getInductionTimes($options) {
$client = createSoapRequest();
$inductionTimes = $client->FITinductionlist($options);
die(print_r($inductionTimes));
return $inductionTimes;
}
function createSoapRequest() {
$url = 'https://fitspace.m-cloudapps.com:444/FITSPACE/MHservice.asmx?WSDL';
$options["connection_timeout"] = 25;
$options["location"] = $url;
$options['trace'] = 1;
$options['style'] = SOAP_RPC;
$options['use'] = SOAP_ENCODED;
$client = new SoapClient($url, $options);
//die(print_R($client->__getFunctions()));
return $client;
}
getInductionTimes(array("IDDate" => "2013-06-28T13:00:00+01:00", "GYMNAME" => "Bournemouth"));
I managed to solve this issue by adding the line of code into my SOAP options array which I then presume was an issue with my WSDL being cached in PHP:
$options['cache_wsdl'] = WSDL_CACHE_NONE;
What I'd like to do is take the route for the current action along with any and all of the route and query string parameters, and change a single query string parameter to something else. If the parameter is set in the current request, I'd like it replaced. If not, I'd like it added. Is there a helper for something like this, or do I need to write my own?
Thanks!
[edit:] Man, I was unclear on what I actually want to do. I want to generate the URL for "this page", but change one of the variables. Imagine the page I'm on is a search results page that says "no results, but try one of these", followed by a bunch of links. The links would contain all the search parameters, except the one I would change per-link.
Edit:
Ok I got a better idea now what you want. I don't know whether it is the best way but you could try this (in the view):
url_for('foo',
array_merge($sf_request->getParameterHolder()->getAll(),
array('bar' => 'barz'))
)
If you use this very often I suggest to create your own helper that works like a wrapper for url_for.
Or if you only want a subset of the request parameters, do this:
url_for('foo',
array_merge($sf_request->extractParameters(array('parameter1', 'parameter3')),
array('bar' => 'barz'))
)
(I formated the code this way for better readability)
Original Answer:
I don't know where you want to change a parameter (in the controller?), but if you have access to the current sfRequest object, this should do it:
$request->setParameter('key', 'value')
You can obtain the request object by either defining your action this way:
public function executeIndex($request) {
// ...
}
or this
public function executeIndex() {
$request = $this->getRequest();
}
For symfony 1.4 I used:
$current_uri = sfContext::getInstance()->getRouting()->getCurrentInternalUri();
$uri_params = $sf_request->getParameterHolder()->getAll();
$url = url_for($current_uri.'?'.http_build_query(array_merge($uri_params, array('page' => $page))));
echo link_to($page, $url);
Felix's suggestion is good, however, it'd require you to hard core the "current route"..
You can get the name of the current route by using:
sfRouting::getInstance()->getCurrentRouteName()
and you can plug that directly in url_for, like so:
url_for(sfRouting::getInstance()->getCurrentRouteName(),
array_merge($sf_request->extractParameters(array('parameter1', 'parameter3')),
array('bar' => 'barz'))
)
Hope that helps.
With the same concept than Erq, and thanks to his code, I have made the same with some small changes, since my URL needs to convert some characters. Its generic though and should work with most forms, in order to save the parameters the user has chosen to search for.
public function executeSaveFormQuery(sfWebRequest $request)
{
$sURLServer = "http://";
$sURLInternalUri = "";
$page = "";
$sURLInternalUri = sfContext::getInstance()->getRouting()->getCurrentInternalUri();
$suri_params = $request->getParameterHolder()->getAll();
$sParams = http_build_query(array_merge($suri_params));
$dpos = strpos($sURLInternalUri, "?");
$sURLConsulta[$dpos] = '/';
$sURL = substr($sURLInternalUri, $dpos);
$dpos = strpos($sURL, "=");
$sURL[$dpos] = '/';
$sURLFinal = $sURLServer . $sURL . '?' . $sParams;
//$this->redirect($this->module_name . '/new');
self::executeNew($request, $sURLFinal);
//echo "var_dump(sURLFinal): ";
//var_dump($sURLFinal);
//echo "<br></br>";
//return sfView::NONE;
}
In executeNew, as easy as:
public function executeNew(sfWebRequest $request, $sURLQuery)
{
//$sURLQuery= "http://";
if ($sURLQuery!= "")
{
$this->form = new sfGuardQueryForm();
//echo "var_dump(sURLQuery)";
//var_dump($sURLQuery);
//echo "<br></br>";
$this->form->setDefault('surl', $sURLQuery);
}
else
{
$this->form = new sfGuardQueryForm();
}
}
echo $sf_context->getRequest()->getUri();