0

我正在开发一个网站,您可以在其中从亚马逊产品广告 API 中搜索商品。我在 views/layouts/master.blade.php 上有一个搜索框,其中包含以下代码:

    {{ Form::open(array('url' => 'AmazonAPI/api.php', 'method' => 'GET')) }}
        {{ Form::text('itemsearch', 'Search ...', ) }}
    {{ Form::submit('Search') }}

该表单使用以下代码发布到 api 文件:

    <?php
        if(isset($_GET['booksearch'])) {
            /* Example usage of the Amazon Product Advertising API */
            include("amazon_api_class.php");

            $obj = new AmazonProductAPI();
            $result ='' ;
            try
            {
                $result = $obj->searchProducts($_GET['booksearch'],
                                               AmazonProductAPI::DVD,
                                               "TITLE");
            }
            catch(Exception $e)
            {
                echo $e->getMessage();
            }

            print_r($result->Items);


    ?>

搜索后,您将导航到该文件,它会显示来自亚马逊的有效 xml 数据。但是正如您所看到的,api 文件是我的 public/assets/AmazonAPI 文件夹中的一个 php 文件,因此在设置 xml 样式时我无法扩展我的布局。请让我知道我应该如何将我的 API 代码包含在 views/searches/index.blade.php 刀片视图中,以便我可以在其上扩展布局,例如:

@extends('layouts.mylayout')

@section('content')
//the api code goes here
@stop

也让我知道我应该打开表格的正确方式。

4

1 回答 1

1

我将指导您以一种简单而更多Laravel的方式来做到这一点。libraries因此您可以在目录下创建一个文件夹app并将您的 amazon api 文件放在该libraries文件夹中。

现在在你composer.json添加"app/your_amozon_api_library_folder_name"的 classmap 中,类似

"autoload": { 
    "classmap": [
        "app/commands",
        "app/controllers",
        "app/models",
        "app/your_amozon_api_library_folder_name",

现在转储您的自动加载,composer dump-autoload or php composer.phar dump-autoload 现在您加载了 amozon api 以供全球使用。

假设你有一个带搜索方法的 HomeController,现在把你的 api 代码放在搜索方法中,

public function search(){
  if(isset($_GET['booksearch'])) {
        /* Example usage of the Amazon Product Advertising API */
        //include("amazon_api_class.php"); no need to include

        $obj = new AmazonProductAPI();
        $result ='' ;
        try
        {
            $result = $obj->searchProducts($_GET['booksearch'],
                                           AmazonProductAPI::DVD,
                                           "TITLE");
        }
        catch(Exception $e)
        {
            echo $e->getMessage();
        }

        //print_r($result->Items);
        return View::make('your view name')->with('items',$result->Items);
 }
}
于 2013-07-11T13:22:26.683 回答