Php Can';t通过ajax Laravel访问具有新实例的扩展类的属性
为了更好地解释,我将给出以下代码示例:Php Can';t通过ajax Laravel访问具有新实例的扩展类的属性,php,laravel,Php,Laravel,为了更好地解释,我将给出以下代码示例: class BaseController extends Controller { public $globalCurrencies; public $currentCurrency; public $globalLanguages; public $currentLanguage; public function __construct() { $this->globalCurren
class BaseController extends Controller
{
public $globalCurrencies;
public $currentCurrency;
public $globalLanguages;
public $currentLanguage;
public function __construct()
{
$this->globalCurrencies = $this->getCurrencies();
$this->globalLanguages = $this->getLanguages();
$this->middleware(function ($request, $next) {
$this->currentCurrency = $this->getCurrentCurrency();
$this->currentLanguage = $this->getCurrentLanguage();
return $next($request);
});
}
手推车控制器
class CartController extends BaseController
{
public function __construct()
{
parent::__construct();
}
BaseController为应用程序设置基本变量。购物车正在使用其中一些货币,如(当前货币)。一些变量是基于会话的,因此在基本构造中有中间件用于在构造函数中获取会话数据)。对于这一部分,一切正常,购物车可以访问baseController属性
问题出现在这里:
class OrderController extends BaseController
{
public function loadPaymentsAndDelivery(Request $request)
{
$cart = new Cart;
dd($cart->globalCurrencies) // WORKS
dd($cart->currentCurrency) // NULL
}
}
基本上,在一个新的购物车实例上,我可以访问在没有中间件的情况下创建的每个属性。没有中间件,我无法访问会话来设置购物车。方法loadPaymentsAndDelivery是通过ajax加载的,但我尝试直接调用该方法,但属性仍然为空
有人能解释为什么会发生这种情况吗?我想你可以使用隐式绑定,你试过了吗?你能给我一些隐式绑定的例子吗?我在docs的文章中看到了这一点,它看起来像是带有控制器/或路由的绑定模型,但我不确定。
currentCurrency
是Cart
模型的属性吗?或者您是否打算执行$this->currentCurrency
?currentCurrency是BaseController的属性。CartController(非模型)扩展了BaseController,因此他可以访问它。@MarekKaliszuk,但他正在创建Cart
(非CartController
)的实例,并试图从此实例访问currentCurrency
。我想你可以使用隐式绑定,你尝试过吗?你能给我一些隐式绑定的例子吗?我在docs的文章中看到了这一点,它看起来像是带有控制器/或路由的绑定模型,但我不确定。currentCurrency
是Cart
模型的属性吗?或者您是否打算执行$this->currentCurrency
?currentCurrency是BaseController的属性。CartController(非模型)扩展了BaseController,因此他有权访问它。@MarekKaliszuk,但他正在创建Cart
(非CartController
)的实例,并试图从此实例访问currentCurrency
。