访问Laravel中侧边栏的控制器方法

时间:2018-03-08 12:49:06

标签: php laravel view controller blade

我正在使用Laravel 5.6制作一个项目,目前我正在创建一个侧边栏,其中包含访问指定控制器功能的链接。 F.E.如果我在帖子刀片中,它将显示侧边栏的PostsController方法。

问题在于每个控制器都有不同的方法,我不想让侧边栏有10种不同的静态布局。

有没有办法通过将控制器的所有方法返回到视图的功能来访问控制器方法?

或者我认为这是错误的..如果有人知道更好的解决方案,我会全力以赴。 :)

我知道我可以安装功能包但我想知道之前有任何简单的解决方案。

EDIT1:

get_class_methods($ this)返回以下值:

Returned Methods of a Controller

我可以添加一个验证器,检查是否存在“index”或“create”。猜猜我的问题已经解决了,谢谢所有回答的问题。

EDIT2:

转储返回方法的代码。

public function index()
{

    $events = Event::all();

    dd($controller = get_class_methods($this));

    return view('events.index', compact(['events', 'controller']));

}

1 个答案:

答案 0 :(得分:0)

您可以使用'get_cass_methods'函数来获取控制器类上的所有方法

<Window x:Class="MyApplication.UI.Dialogs.SomeWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525" Background="{DynamicResource Theme.TreeView.Background}">
  <Window.Resources>
    <Style TargetType="{x:Type GridViewColumnHeader}" >
      <Setter Property="FontWeight" Value="{StaticResource Theme.DataGrid.ColumnHeader.FontWeight}"/>
      <Setter Property="BorderBrush" Value="Transparent"/>
      <Setter Property="Padding" Value="{StaticResource Theme.DataGrid.Cell.Padding}"/>
      <Setter Property="Background" Value="{StaticResource Theme.DataGrid.ColumnHeader.Background}"/>
      <Setter Property="Foreground" Value="{StaticResource Theme.DataGrid.ColumnHeader.Foreground}"/>
    </Style>
    <Style TargetType="{x:Type ListView}" >
      <Setter Property="BorderThickness" Value="{DynamicResource Theme.DataGrid.BorderThickness}"/>
    </Style>
    <Style TargetType="{x:Type ListViewItem}" >
      <Setter Property="Background" Value="White" />
      <Setter Property="Foreground" Value="{DynamicResource Theme.DataGrid.Row.Foreground}" />
      <Setter Property="VerticalAlignment" Value="Stretch"></Setter>
      <Setter Property="HorizontalAlignment" Value="Stretch"></Setter>
      <Setter Property="VerticalContentAlignment" Value="Stretch"></Setter>
      <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
      <Setter Property="Padding" Value="{DynamicResource Theme.DataGrid.Cell.Padding}"></Setter>
    </Style>
  </Window.Resources>
  <StackPanel>
    <ListView Margin="10" ItemsSource="{Binding Users}">
      <ListView.View>
        <GridView >
          <GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}" />
          <GridViewColumn Header="Age"  DisplayMemberBinding="{Binding Age}" />
          <GridViewColumn Header="Mail"  DisplayMemberBinding="{Binding Mail}" />
          <GridViewColumn Header="Group"  DisplayMemberBinding="{Binding Group}" />
        </GridView>
      </ListView.View>
    </ListView>
  </StackPanel>
</Window>

如果要从父类中过滤掉方法

function index() {
  $methods = get_class_methods($this);
  return view('posts', compact('methods'));
}