草庐IT

php - 在 View laravel 中从 Controller 调用函数

coder 2024-05-02 原文

这实际上是一件简单的事情,但由于我是 laravel 的新手,这让我很麻烦,我有这个功能

class HomeController extends Controller {
    public $layout = 'layouts.master';
    public function __construct()
    {
        $this->middleware('auth');
    }
    public function index()
    {
        return view('landing-page')
       ->with('title','Landing Page')
       ->with('users',User::member()->get());

    }
    <!-- HOW TO CALL getDate Function in my view -->
    public function getDate(){
       $mytime = Carbon::now()->format('f');
       $response = array
                (
                    'content' =>$mytime,
                    'status'  =>'success',
                );
       return Response::json($response)->view('landing-page');      
   }
}

如何在我的 laravel View 中调用它?我在互联网上搜索但我不太明白,因为编程对我来说是新的我已经在我看来使用路线尝试过这样的事情 {{url('date')}}, { {$mytime}},但没有工作,好吧,如果有某些事件发生,比如点击按钮,我可以调用一个函数,但如果没有特定事件,我会很困惑

<p>Month :{{url('date')}}</p>
<p>Month :{{$mytime()}}</P>

上面是我尝试调用函数的一些方法

UPDATE WHAT I'VE TRIED BASED on @tptcat answer and work

创建位于文件 `app\helpers.php 下的 helpers.php

<?php
use Carbon\Carbon;
if (! function_exists('myGetDate')) {
    function myGetDate()
    {
       $mytime = Carbon::now()->format('F');
      return $mytime
    }
}

composer.json

"autoload": {
    "files":[
        "App/helpers.php"
    ],

在我看来调用函数

{{myGetDate()}}

最佳答案

这不是一个硬性规定,但使用框架的一部分是在某种程度上接受它的约定并将它们用于你的优势。

一般来说,您的 Controller 用于处理 HTTP(GET、POST、PUT 等)。它们并非旨在成为从您的 View 中调用方法的不分青红皂白的方式。

我建议改为这样做:

// app/Utilities.php
<?php

class Utilities
{
    public static function getDate()
    {
        // your code
    }
}

那么在你看来:

{{ Utilities::getDate() }}

或:

// app/helpers.php
<?php

if (! function_exists('myGetDate')) {
    function myGetDate()
    {
        // your code
    }
}

那么在你看来:

{{ myGetDate() }}

然后在 composer.json 中自动加载您创建的任何文件:

"autoload": {
    "files": [
        "app/Utilities.php"
    ]
}

或者...

"autoload": {
    "files": [
        "app/helpers.php"
    ]
}

然后运行composer dump-autoload

解决此问题的另一种方法是使用 Blade Service Injection (在 Laravel 5.1 中引入)。这在技术上可以通过您的 Controller 完成:

// In your blade template
@inject('service', 'App\Http\Controllers\HomeController')

{{ $service->getDate() }}

但是如果要从 Blade 模板中将其作为方法调用,我仍然建议不要在 Controller 中使用负责返回此数据的方法。使用某种类型的服务类会更合适:

// app/Utilities.php
<?php

namespace App;

class Utilities
{
    public function getDate()
    {
        // your code
    }
}

// In your blade template
@inject('service', 'App\Utilities')

{{ $service->getDate() }}

在这种情况下,您不会需要将它添加到composer.json 中的files 自动加载数组。

就其值(value)而言,我对您的项目一无所知,我会选择前两个选项之一,更有可能是 helpers.php 选项。

关于php - 在 View laravel 中从 Controller 调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39813314/

有关php - 在 View laravel 中从 Controller 调用函数的更多相关文章

  1. ruby-on-rails - 渲染另一个 Controller 的 View - 2

    我想要做的是有2个不同的Controller,client和test_client。客户端Controller已经构建,我想创建一个test_clientController,我可以使用它来玩弄客户端的UI并根据需要进行调整。我主要是想绕过我在客户端中内置的验证及其对加载数据的管理Controller的依赖。所以我希望test_clientController加载示例数据集,然后呈现客户端Controller的索引View,以便我可以调整客户端UI。就是这样。我在test_clients索引方法中试过这个:classTestClientdefindexrender:template=>

  2. ruby-on-rails - Rails 应用程序中的 Rails : How are you using application_controller. rb 是新手吗? - 2

    刚入门rails,开始慢慢理解。有人可以解释或给我一些关于在application_controller中编码的好处或时间和原因的想法吗?有哪些用例。您如何为Rails应用程序使用应用程序Controller?我不想在那里放太多代码,因为据我了解,每个请求都会调用此Controller。这是真的? 最佳答案 ApplicationController实际上是您应用程序中的每个其他Controller都将从中继承的类(尽管这不是强制性的)。我同意不要用太多代码弄乱它并保持干净整洁的态度,尽管在某些情况下ApplicationContr

  3. ruby-on-rails - rails : How to make a form post to another controller action - 2

    我知道您通常应该在Rails中使用新建/创建和编辑/更新之间的链接,但我有一个情况需要其他东西。无论如何我可以实现同样的连接吗?我有一个模型表单,我希望它发布数据(类似于新View如何发布到创建操作)。这是我的表格prohibitedthisjobfrombeingsaved: 最佳答案 使用:url选项。=form_for@job,:url=>company_path,:html=>{:method=>:post/:put} 关于ruby-on-rails-rails:Howtomak

  4. ruby - 在没有 sass 引擎的情况下使用 sass 颜色函数 - 2

    我想在一个没有Sass引擎的类中使用Sass颜色函数。我已经在项目中使用了sassgem,所以我认为搭载会像以下一样简单:classRectangleincludeSass::Script::FunctionsdefcolorSass::Script::Color.new([0x82,0x39,0x06])enddefrender#hamlengineexecutedwithcontextofself#sothatwithintemlateicouldcall#%stop{offset:'0%',stop:{color:lighten(color)}}endend更新:参见上面的#re

  5. ruby-on-rails - 在 ruby​​ 中使用 gsub 函数替换单词 - 2

    我正在尝试用ruby​​中的gsub函数替换字符串中的某些单词,但有时效果很好,在某些情况下会出现此错误?这种格式有什么问题吗NoMethodError(undefinedmethod`gsub!'fornil:NilClass):模型.rbclassTest"replacethisID1",WAY=>"replacethisID2andID3",DELTA=>"replacethisID4"}end另一个模型.rbclassCheck 最佳答案 啊,我找到了!gsub!是一个非常奇怪的方法。首先,它替换了字符串,所以它实际上修改了

  6. 使用 ACL 调用 upload_file 时出现 Ruby S3 "Access Denied"错误 - 2

    我正在尝试编写一个将文件上传到AWS并公开该文件的Ruby脚本。我做了以下事情:s3=Aws::S3::Resource.new(credentials:Aws::Credentials.new(KEY,SECRET),region:'us-west-2')obj=s3.bucket('stg-db').object('key')obj.upload_file(filename)这似乎工作正常,除了该文件不是公开可用的,而且我无法获得它的公共(public)URL。但是当我登录到S3时,我可以正常查看我的文件。为了使其公开可用,我将最后一行更改为obj.upload_file(file

  7. ruby - 在 Ruby 中有条件地定义函数 - 2

    我有一些代码在几个不同的位置之一运行:作为具有调试输出的命令行工具,作为不接受任何输出的更大程序的一部分,以及在Rails环境中。有时我需要根据代码的位置对代码进行细微的更改,我意识到以下样式似乎可行:print"Testingnestedfunctionsdefined\n"CLI=trueifCLIdeftest_printprint"CommandLineVersion\n"endelsedeftest_printprint"ReleaseVersion\n"endendtest_print()这导致:TestingnestedfunctionsdefinedCommandLin

  8. ruby-on-rails - 如何在 Rails Controller Action 上触发 Facebook 像素 - 2

    我有一个ruby​​onrails应用程序。我按照facebook的说明添加了一个像素。但是,要跟踪转化,Facebook要求您将页面置于达到预期结果时出现的转化中。即,如果我想显示客户已注册,我会将您注册后转到的页面作为成功对象进行跟踪。我的问题是,当客户注册时,在我的应用程序中没有登陆页面。该应用程序将用户带回主页。它在主页上显示了一条消息,所以我想看看是否有一种方法可以跟踪来自Controller操作而不是实际页面的转化。我需要计数的Action没有页面,它们是ControllerAction。是否有任何人都知道的关于如何执行此操作的gem、文档或最佳实践?这是进入布局文件的像素

  9. c# - 如何在 ruby​​ 中调用 C# dll? - 2

    如何在ruby​​中调用C#dll? 最佳答案 我能想到几种可能性:为您的DLL编写(或找人编写)一个COM包装器,如果它还没有,则使用Ruby的WIN32OLE库来调用它;看看RubyCLR,其中一位作者是JohnLam,他继续在Microsoft从事IronRuby方面的工作。(估计不会再维护了,可能不支持.Net2.0以上的版本);正如其他地方已经提到的,看看使用IronRuby,如果这是您的技术选择。有一个主题是here.请注意,最后一篇文章实际上来自JohnLam(看起来像是2009年3月),他似乎很自在地断言RubyCL

  10. java - 从 JRuby 调用 Java 类的问题 - 2

    我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www

随机推荐