我正在创建一个Laravel5.2包,以下是我的文件:
packages/
-Shreeji/
--Ring/
---composer.json
---src/
----Ring.php
----RingModel.php
----RingServiceProvider
----Views/
-----ringslist.blade.phpcomposer.json
{
"name": "shreeji/ring",
"description": "Simple",
"license": "MIT",
"authors": [
{
"name": "author",
"email": "email@gmail.com"
}
],
"autoload": {
"psr-4": {
"Shreeji\\Ring\\": "src/"
}
},
"minimum-stability": "dev",
"require": {
"Illuminate/support": "~5"
}
}Ring.php
namespace Shreeji\Ring;
use Illuminate\Http\Response;
Class Ring {
function __construct() {
}
public function get_all()
{
return view("ring::ringlist");
}
}RingServiceProvider.php
namespace Shreeji\Ring;
use Illuminate\Support\ServiceProvider;
Class RingServiceProvider extends ServiceProvider
{
public function register()
{
$this->app->bind('ring', function($app){
return new Ring;
});
}
public function boot()
{
$this->loadViewsFrom(__DIR__ . '/Views', 'ring');
}
}ringlist.blade.php
<!DOCTYPE html>
<html>
<body>
<h1>Welcome</h1>
</body>
</html>在app/Http/Controllers中,我创建了如下所示的测试文件:
Ringcontroller.php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Shreeji\Ring\Ring;
class RingController extends Controller
{
public function index()
{
$ring = New Ring();
$ring->get_all();
}
}当我调用控制器时,浏览器会继续加载并系统崩溃。我不知道是否可以像这样在任何控制器类之外使用view。
如果我在从view文件调用Ring.php时做错了什么,请告诉我。
发布于 2016-01-20 04:01:44
我看到了几个问题:
require illuminate/view包。您需要更新composer.json文件以要求"illuminate/view": "~5"。view()函数是Illuminate\Foundation\helpers.php中包含的一个助手方法。除非您只想依赖于整个Laravel框架来实现这个功能,否则您需要创建自己的view()函数。代码在下面,你把它放在哪里取决于你自己。
如果(!)Function_exists(‘/**’){/***获取给定视图的评估视图内容。** @param字符串$view * @param数组$data * @param数组$mergeData *@返回$mergeData */ function视图($view= null,$data = [],$mergeData= []) { $factory = app(ViewFactory::class);if (func_num_args() === 0) {返回$factory;}返回$factory->make($view,$data,$mergeData);}return任何内容,就不会看到任何东西。确保从控制器方法中返回一些内容。发布于 2016-01-19 10:01:22
您可以使用类似于view的文档
在你的RingServiceProvider注册中,一个作曲家
use Illuminate\Contracts\View\Factory as ViewFactory;
public function boot(ViewFactory $view)
{
$view->composer('*', 'App\Http\ViewComposers\SomeComposer');
}在App\Http\ViewComposers\SomeComposer中
use Illuminate\Contracts\View\View;
public function compose(View $view)
{
$view->with('count', '1');
}玩它,基本上我使用它共享$variables在特定的视图,但也许这可以帮助你实现你想要的。
或者你可以直接用use Illuminate\Contracts\View\View;来加载你需要的视图!
https://stackoverflow.com/questions/34871902
复制相似问题