簡體   English   中英

在函數內部調用函數[PHP,Laravel,Eloquentl]

[英]Calling a function inside a function [PHP, Laravel, Eloquentl]

我正在使用基於Laravel構建的October CMS,但遇到一些奇怪的問題,不確定如何解釋。

代碼示例1:工作正常(Component EstateList組件)

public function onRun()
{
  $this->listEstates();
}

/**
 * Pulls all the estates from the model
 *
 * @return $estateList
 */
protected function listEstates()
{
  $estateList = RealEstate::all();

  return $estateList;
}

代碼示例2:不起作用(組件EstateDetails)

public function onRun()
{
  $this->show();
}

/**
 * Returns the slug and display individual Estate Object
 *
 * @return $pageDetails
 */
 protected function show()
 {
   $slug = $this->param('slug');
   $pageDetails = RealEstate::find($slug);

   echo $slug; //returns slug as it should
   echo $pageDetails; //empty

   if ($pageDetails) {
     return $pageDetails;
   } else {
     return \Response::make('Page not found', 404);
   }
 }

如果我只是將show()的代碼放入onRun()函數中,它將很好地工作。 為什么在代碼示例2中echo echo $pageDetails返回空 如果它在單獨的函數show()

謝謝您的幫助。

嘗試將其更改為RealEstate::where('slug', '=', $slug)->firstOrFail(); find位在ID表中搜索列,而不是子段。

您不是在“返回” show()的響應

嘗試更改$this->show(); 返回return $this->show(); onRun()

嘗試將代碼更改為此

public function onRun()
{
  return  $this->show();
}

/**
 * Returns the slug and display individual Estate Object
 *
 * @return $pageDetails
 */
 protected function show()
 {
   $slug = $this->param('slug');
   $pageDetails = RealEstate::where('slug', '=', $slug)->firstOrFail();;

   echo $slug; //returns slug as it should
   echo $pageDetails; //empty

   if ($pageDetails) {
     return $pageDetails;
   } else {
     return \Response::make('Page not found', 404);
   }
 }

希望這可以解決您的問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM