我刚接触php并堆叠,所以我请求你耐心等待我。 我在大学学习Laravel框架,下一个代码给了我这样的信息:
未定义的属性: 应用程序\ HTTP \控制器\ CatalogController :: $ arrayPeliculas
我现在会告诉你代码:
-CatalogController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class CatalogController extends Controller{
public function getIndex(){
return view('catalog.index',
array('arrayPeliculas'=>$this->arrayPeliculas));
}
public function getShow($id){
return view('catalog.show', array('id'=>$id));
}
public function getCreate(){
return view('catalog.create');
}
public function getEdit($id){
return view('catalog.edit', array('id'=>$id));
}
}
-index.blade.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<title>Bootstrap 101 Template</title>
<!-- Bootstrap -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div class="container">
@extends('layouts.master')
@section('content')
<div class="row">
@foreach( $arrayPeliculas as $key => $pelicula )
<div class="col-xs-6 col-sm-4 col-md-3 text-center">
<a href="{{ url('/catalog/show/' . $key ) }}">
<img src="{{$pelicula['poster']}}" style="height:200px"/>
<h4 style="min-height:45px;margin:5px 0 10px 0">
{{$pelicula['title']}}
</h4>
</a>
</div>
@endforeach
</div>
@stop
</div>
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<!-- Include all compiled plugins (below), or include individual files as needed -->
<script src="js/bootstrap.min.js"></script>
</body>
</html>
-array_peliculas.php
private $arrayPeliculas = array(
array(
'title' => 'El padrino',
'year' => '1972',
'director' => 'Francis Ford Coppola',
'poster' => 'http://ia.media-imdb.com/images/M/MV5BMjEyMjcyNDI4MF5BMl5BanBnXkFtZTcwMDA5Mzg3OA@@._V1_SX214_AL_.jpg',
'rented' => false,
'synopsis' => 'Don Vito Corleone (Marlon Brando) es el respetado y temido jefe de una de las cinco familias de la mafia de Nueva York. Tiene cuatro hijos: Connie (Talia Shire), el impulsivo Sonny (James Caan), el pusilánime Freddie (John Cazale) y Michael (Al Pacino), que no quiere saber nada de los negocios de su padre. Cuando Corleone, en contra de los consejos de \'Il consigliere\' Tom Hagen (Robert Duvall), se niega a intervenir en el negocio de las drogas, el jefe de otra banda ordena su asesinato. Empieza entonces una violenta y cruenta guerra entre las familias mafiosas.'
)
这个数组比较大,但举个例子可以。有谁能够帮我? 仅供参考,route.php文件工作正常。
答案 0 :(得分:0)
错误来自这一行:
array('arrayPeliculas'=>$this->arrayPeliculas));
您的控制器中不存在 $arrayPeliculas
。您可以这样添加:
private $arrayPelliculas = [...];
直接在您的控制器中。
要从“其他”文件加载数组,您可以创建这样的特征或帮助器。
<强>辅助强>
档案位置:app/Helpers/Peliculas.php
。您自己创建文件夹和文件。别忘了添加.php扩展名。
<?php
namespace App\Helpers;
class Pelicula
{
public static function getPeliculas()
{
return [
[
'title' => 'El padrino',
'year' => '1972',
'director' => 'Francis Ford Coppola',
'poster' => 'http://ia.media-imdb.com/images/M/MV5BMjEyMjcyNDI4MF5BMl5BanBnXkFtZTcwMDA5Mzg3OA@@._V1_SX214_AL_.jpg',
'rented' => false,
'synopsis' => 'Don Vito Corleone (Marlon Brando) es el respetado y temido jefe de una de las cinco familias de la mafia de Nueva York. Tiene cuatro hijos: Connie (Talia Shire), el impulsivo Sonny (James Caan), el pusilánime Freddie (John Cazale) y Michael (Al Pacino), que no quiere saber nada de los negocios de su padre. Cuando Corleone, en contra de los consejos de \'Il consigliere\' Tom Hagen (Robert Duvall), se niega a intervenir en el negocio de las drogas, el jefe de otra banda ordena su asesinato. Empieza entonces una violenta y cruenta guerra entre las familias mafiosas.'
]
];
}
}
然后在你的控制器中
添加到顶部use App\Helpers\Pelicula;
并更新getIndex()
函数,如下所示:
return view('catalog.index', array('arrayPeliculas'=> Pelicula::getPeliculas()));
优点是您现在可以从任何地方访问该数组。甚至可以直接从您的视图中通过控制器。要全局访问它,您可以像config/app.php
一样添加别名:
'aliases' => [
...
'Pelicula' => App\Helpers\Pelicula::class,
];
然后在你的项目中的任何地方,只需Pelicula::getPeliculas()
,它就会给你那个数组;
答案 1 :(得分:0)
你的代码错了。您无法使用$this->arrayPeliculas
调用数组。
在CatalogController.php
创建一个名为Peliculas
的函数:
protected function peliculas(){
return
array(
'title' => 'El padrino',
'year' => '1972',
'director' => 'Francis Ford Coppola',
'poster' => 'http://ia.media-imdb.com/images/M/MV5BMjEyMjcyNDI4MF5BMl5BanBnXkFtZTcwMDA5Mzg3OA@@._V1_SX214_AL_.jpg',
'rented' => false,
'synopsis' => 'Don Vito Corleone (Marlon Brando) es el respetado y temido jefe de una de las cinco familias de la mafia de Nueva York. Tiene cuatro hijos: Connie (Talia Shire), el impulsivo Sonny (James Caan), el pusilánime Freddie (John Cazale) y Michael (Al Pacino), que no quiere saber nada de los negocios de su padre. Cuando Corleone, en contra de los consejos de \'Il consigliere\' Tom Hagen (Robert Duvall), se niega a intervenir en el negocio de las drogas, el jefe de otra banda ordena su asesinato. Empieza entonces una violenta y cruenta guerra entre las familias mafiosas.'
);
}
现在,您可以使用$this->arrayPeliculas
getIndex
来调用此新功能