2013-07-09 4 views
0

Я создаю веб-сайт с панелью поиска, которая запрашивает книги и сортировки амазонок по категории книг и по релевантности. Я сделал форму на моем макете следующим образом:Интеграция API поиска продукта Amazon в laravel

{{ Form::open(array('action' => 'home/api', 'method' => 'GET', 'class' => 'search1')) }} 
     {{ Form::text('booksearch', 'Search...', array('class' => 'searchinput searchbooks', 'placeholder' => 'Search...')) }} 
      {{ Form::select('category', array(
       '1' => 'All Books', 
       '2' => 'All Textbooks', 
       '3' => 'Business & Finance Textbooks', 
       '4' => 'Communication & Journalism Textbooks', 
       '5' => 'Computer Science Textbooks', 
       '6' => 'Education Textbooks', 
       '7' => 'Engineering Textbooks', 
       '8' => 'Humanities Textbooks', 
       '9' => 'Law Textbooks', 
       '10' => 'Medicine & Health Sciences Textbooks', 
       '11' => 'Reference Textbooks', 
       '12' => 'Science & Mathematics Textbooks', 
       '13' => 'Social Sciences Textbooks' 

      ), '1', array('class'=>'btn btn-primary')) }} 

      {{ Form::select('sort', array(
       '1' => 'Relevance', 
       '2' => 'Alphabetical: A to Z', 
       '3' => 'Alphabetical: Z to A', 
       '4' => 'Bestselling', 
       '5' => 'Average customer review', 
       '6' => 'Price: low to high', 
       '7' => 'Price: high to low', 
       '8' => 'Publication date: newer to older' 

      ), '1', array('class'=>'btn btn-primary')) }} 

      {{ Form::submit('Search', array('class'=>'btn btn-primary submitbook')) }} 

    {{ Form::close() }} 

У меня есть это в моем routes.php:

Route::controller('/', 'HomeController'); 
Route::controller('home/api', '[email protected]'); 

На моем HomeController:

public function getIndex() 
{ 
    return View::make('home.index'); 
} 
public function getSearch() 
{ 
    return View::make('home.api'); 
} 

Затем я создал АНИ файл, в котором моя форма будет отправляться в режиме просмотра/home/api.blade.php со следующим кодом:

<?php 
//Enter your IDs 
define("Access_Key_ID", "myaccesskeyhere"); 
define("Associate_tag", "x00a7-20"); 
//Set up the operation in the request 


if(!empty($_GET['booksearch']) && !empty($_GET['category']) && !empty($_GET['sort'])) { 
    $booksearch = ''; 
    $category = ''; 
    $sort = ''; 
    $SearchIndex = ''; 
    $Keywords = ''; 
} 


function ItemSearch($SearchIndex, $Keywords){ 
//Set the values for some of the parameters 
$Operation = "ItemSearch"; 
$Version = "2011-08-01"; 
$ResponseGroup = "ItemAttributes,Offers"; 
//User interface provides values 
//for $SearchIndex and $Keywords 

//Define the request 
$request= 
"http://webservices.amazon.com/onca/xml" 
. "?Service=AWSECommerceService" 
. "&AssociateTag=" . Associate_tag 
. "&AWSAccessKeyId=" . Access_Key_ID 
. "&Operation=" . $Operation 
. "&Version=" . $Version 
. "&SearchIndex=" . $SearchIndex 
. "&Keywords=" . $Keywords 
. "&Signature=" . [Request Signature] 
. "&ResponseGroup=" . $ResponseGroup; 
//Catch the response in the $response object 
$response = file_get_contents($request); 
$parsed_xml = simplexml_load_string($response); 
printSearchResults($parsed_xml, $SearchIndex); 
} 
?> 

Пожалуйста, дайте мне знать, где им будет неправильно, потому что я получаю эту ошибку, когда я пытаюсь получить доступ к форме:

Class [email protected] does not exist 

ответ

2

Route::controller() не получает имя функции в качестве своего 2-го параметра.

Вы должны изменить линию Route::controller('home/api', '[email protected]'); на контроллер API, возможно, названный как ApiController, и это будет Route::controller('home/api', 'ApiController');.

И тогда вы можете создать ApiController.php в своей папке app/controllers. Создайте свою функцию getIndex и поместите в нее логику поиска.

+0

спасибо. Я сделал именно это, но теперь я получаю ошибку: Неизвестное действие [home/api]. – TechyTimo

+0

Я только что отредактировал свой ответ, вы должны определить 'getIndex' вместо' getSearch' и не забудьте сделать 'composer dump-autoload', если вы только что создали контроллер. –

+0

Представьте, я просто сделал именно это ... ту же ошибку: Неизвестное действие [home/api]. – TechyTimo