bab*_*eii 1 php laravel laravel-4
我试图将一些代码提取到控制器内的私有函数,以便稍微整理一下,但函数似乎没有运行.
路线:
Route::resource('posts', 'PostsController');
Run Code Online (Sandbox Code Playgroud)
当我获取以下网址时:
/posts?page=2&posts_per_page=3&published=0
Run Code Online (Sandbox Code Playgroud)
它忽略了页面和posts_per_page变量(即它只返回前10个未发布的结果)但是当我在index方法中有这个代码时它起作用了.
public function index()
{
// set defaults for page number and posts per page
$page = 1;
$postsPerPage = 10;
$published = 1;
$this->getPagesAndPostsPerPage($page, $postsPerPage);
// Get published or not
// Not published = 0
// Published = 1
if ( Input::has('published') )
{
$published = Input::get('published');
}
// return paginated results
$skip = ($page - 1) * $postsPerPage;
$posts = Post::where('published', '=', $published)
->orderBy('published_date', 'desc')
->skip($skip)
->take($postsPerPage)
->get();
return Response::json([
'data' => $this->transformCollection($posts)
], 200);
}
// Get pages and posts per page
private function getPagesAndPostsPerPage($page, $postsPerPage)
{
// if posts per page and page are defined
if ( Input::has('posts_per_page') && Input::has('page') )
{
// get inputs
$postsPerPage = Input::get('posts_per_page');
$page = Input::get('page');
}
// else if just page is defined
elseif ( Input::has('page') )
{
$page = Input::get('page');
}
}
Run Code Online (Sandbox Code Playgroud)
谁能看到我做错了什么?
你没有从中返回任何东西 $this->getPagesAndPostsPerPage($page, $postsPerPage);
函数内定义的变量是特定于函数的,这意味着如果需要获取更新的值,则需要来回传递函数变量.要么是这样,要么使用类变量(属性),以便您可以从代码中的任何位置访问更新的值.
你的控制器:
public function index()
{
// set defaults for page number and posts per page
$page = 1;
$postsPerPage = 10;
$published = 1;
// Get the return value:
$pagesAndPostsPerPage = $this->getPagesAndPostsPerPage($page, $postsPerPage);
Run Code Online (Sandbox Code Playgroud)
你的getPagesandPostsPerPage()功能:
private function getPagesAndPostsPerPage($page, $postsPerPage){
//Grab pages and posts per page here
//Create a new array and set the values
$pagesAndPostsPerPage = array(
'page' =>$page,
'postsPerPage'=>$postsPerPage,
);
//Return the array
return $pagesAndPostsPerPage;
}
Run Code Online (Sandbox Code Playgroud)
如果您需要更多解释,请告诉我!我很乐意帮助你.
编辑:
忘记提及,如果您不想使用ampersand(&)运算符为函数提供返回值来修改它们,也可以将变量作为函数的引用传递.
http://php.net/manual/en/language.references.pass.php
例:
function addOne(&$number)
{
$number++;
// Notice no return statement
}
$number = 1;
addOne($number);
echo $number; // Returns 2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19276 次 |
| 最近记录: |