2014-06-11 78 views
2

的index.php頁面如何在瘦身框架中處理POST請求?

//post : The handler POST requests 
require 'Slim/Slim.php'; 
require 'RedBean/rb.php'; 

// register Slim auto-loader 
\Slim\Slim::registerAutoloader(); 
// do initial application and database setup 
R::setup('mysql:host=localhost;dbname=slim','root','root'); 
R::freeze(true); 

// initialize app 
$app = new \Slim\Slim(); 

// handle POST requests to /articles 
$app->post('/articles', function() use ($app) {  
    try { 
    // get and decode JSON request body 
    $request = $app->request(); 
    $body = $request->getBody(); 
    $input = json_decode($body); 

    // store article record 
    $article = R::dispense('articles'); 
    $article->title = (string)$input->title; 
    $article->url = (string)$input->url; 
    $article->date = (string)$input->date; 
    $id = R::store($article);  

    // return JSON-encoded response body 
    $app->response()->header('Content-Type', 'application/json'); 
    echo json_encode(R::exportAll($article)); 
    } catch (Exception $e) { 
    $app->response()->status(400); 
    $app->response()->header('X-Status-Reason', $e->getMessage()); 
    } 
}); 

// run 
$app->run(); 

當我加載index.php我得到404找不到網頁此錯誤。

POST請求用於創建一個新項目。我如何爲項目創建提供數據。我的表結構

table name: articles 

id | title | url | date 

我做成功合作GET(用於retreive數據)請求。

所以我不知道如何使用POST請求在slim。請給我一個關於如何使用POST請求的具體解決方案。

謝謝..

+1

你的問題是什麼? '「當我加載index.php時......」「你是什麼意思?你的意思是當你在瀏覽器中訪問本地主機時,當你訪問/文章?這是你的完整index.php? – Steve

+0

@ user574632,http://localhost/dpu_bin/slim/index.php這個頁面給出了上面提到的錯誤。是的,這是完整的index.php,就像我在我的問題 – next2u

+0

你試着發佈一些數據到你的'/ articles '通過捲曲? –

回答

1

如果這是你完成的index.php,那麼你就沒有對任何定義get請求路由,所以加載在瀏覽器將失敗的頁面。添加以下$app->run();之前,你不會得到錯誤:

$app->get('/', function() { 
    echo "Hello next2u"; 
}); 

我覺得你真的需要閱讀的文檔:http://docs.slimframework.com/

+0

+ 1..ohk ..感謝..頁面已加載。現在我該如何創建新的項目。在我的代碼中,我應該做什麼? – next2u

+0

在我的index.php文件中沒有post.Data數據可以添加數據? – next2u

+0

@ next2u那麼你需要POST數據。在'/ articles'函數中使用json表明它可以被JavaScript使用,但這只是猜測,只有你知道數據應該來自哪裏。這個人是你正在研究的項目嗎? – Steve

1

這裏的問題是,你正在使用一個不存在的某些航線。

當你通過瀏覽器直接訪問,您要發送GET請求,而不是一個POST請求,GET路線不存在於你的應用程序,這就是爲什麼你得到這個錯誤。

看看捲曲: http://www.php.net/manual/en/book.curl.php

或者一些插件的Firefox RESTCLIENT或Chrome POSTMAN發送POSTPUT請求您的應用程序。