Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Здравствуйте. Делаю свой небольшой блог. Возникла проблемка с переходами по url. Для создания и редактирования постов создала контроллер PostController. Так вот. У меня неправильно отрабатывают все методы контроллера, кроме @index. Когда пытаюсь зайти по url http://localhost:8000/admin/post/create artisan мне выдает ошибку invalid request (unexpected eof), хотя такой путь существует. Метод как бы отрабатывает, страница рендерится, но выдается пользователю без маломальских стилей.
Вот так:
А должно быть вот так:
Прикрепляю еще список роутов, которые задействованы и ошибку, которую выдает мне сервер.
Буду рада любой помощи.
Не в сети
Скорее всего ты в одном из представлений (views) не закрыл какой-нибудь if, foreach и пр. Покажи представления, которые участвуют в запросе.
Не в сети
Файл, который вызываю в методе create():
@extends('admin/layouts/app')
@section('main-content')
<!-- Content Wrapper. Contains page content -->
<div class="content-wrapper">
<!-- Content Header (Page header) -->
<section class="content-header">
<h1>
Create post
</h1>
</section>
<div class="box box-primary">
<!-- form start -->
<form role="form">
<div class="box-body">
<div class="form-group">
<label for="title">Post title</label>
<input type="text" class="form-control" id="title" name="title" placeholder="Enter title">
</div>
<div class="form-group">
<label for="subtitle">Post subtitle</label>
<input type="text" class="form-control" id="subtitle" name="subtitle" placeholder="Enter subtitle">
</div>
<div class="form-group">
<label for="slug">Post slug</label>
<input type="text" class="form-control" id="slug" name="slug" placeholder="Enter slug">
</div>
<div class="box-body pad">
<form>
<textarea class="textarea" name="body" placeholder="Place some text here" style="width: 50%; height: 200px; font-size: 14px; line-height: 18px; border: 1px solid #dddddd; padding: 10px;"></textarea>
</form>
</div>
<div class="form-group">
<label for="image">File input</label>
<input type="file" id="image" name="image">
</div>
<div class="checkbox">
<label>
<input type="checkbox" name="status"> Publish
</label>
</div>
</div>
<div class="box-footer">
<button type="submit" class="btn btn-primary">Save</button>
</div>
</form>
</div>
@endsection
А вот файл, от которого унаследована эта вьюха:
<!DOCTYPE html>
<html>
<head>
@include('admin.layouts.head')
</head>
<body class="hold-transition skin-purple sidebar-mini">
<div class="wrapper">
@include('admin.layouts.header')
@include('admin.layouts.sidebar')
@section('main-content')
@show
@include('admin.layouts.footer')
</div>
</body>
</html>
Дело в том, что я думаю, что с виюхой все нормально. Я ее же подключала в индексном методе этого контроллера и все было хорошо. Страничка рендерится и стили на своих местах.
Изменено kittycat_13 (25.07.2017 12:03:41)
Не в сети
@extends должен выглядеть так:
@extends('admin.layouts.app')
Еще, у тебя участвуют представления, которые ты вставляешь через @include и которые ты не показала.
Если ты думаешь, что в представлениями все нормально, смотри другие файлы, например маршруты, контроллер, посредников (middleware) и пр. Но сначала разберись в представлениями, обычно ошибка в них.
Изменено AlexeyMezenin (25.07.2017 12:10:27)
Не в сети
Извиняюсь.
Вот head.blade.php
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>AdminLTE 2 | Dashboard</title>
<!-- Tell the browser to be responsive to screen width -->
<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
<!-- Bootstrap 3.3.6 -->
<link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">
<!-- Font Awesome -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css">
<!-- Ionicons -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ionicons/2.0.1/css/ionicons.min.css">
<!-- Theme style -->
<link rel="stylesheet" href="dist/css/AdminLTE.min.css">
<!-- AdminLTE Skins. Choose a skin from the css/skins
folder instead of downloading all of them to reduce the load. -->
<link rel="stylesheet" href="dist/css/skins/_all-skins.min.css">
<!-- iCheck -->
<link rel="stylesheet" href="plugins/iCheck/flat/blue.css">
<!-- Morris chart -->
<link rel="stylesheet" href="plugins/morris/morris.css">
<!-- jvectormap -->
<link rel="stylesheet" href="plugins/jvectormap/jquery-jvectormap-1.2.2.css">
<!-- Date Picker -->
<link rel="stylesheet" href="plugins/datepicker/datepicker3.css">
<!-- Daterange picker -->
<link rel="stylesheet" href="plugins/daterangepicker/daterangepicker.css">
<!-- bootstrap wysihtml5 - text editor -->
<link rel="stylesheet" href="plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.min.css">
<!-- HTML5 Shim and Respond.js 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]-->
Файл header.blade.php
<header>
<a href="index2.html" class="logo">
<!-- mini logo for sidebar mini 50x50 pixels -->
<span class="logo-mini"><b>A</b>LT</span>
<!-- logo for regular state and mobile devices -->
<span class="logo-lg"><b>Admin</b>Blog</span>
</a>
<!-- Header Navbar: style can be found in header.less -->
<nav class="navbar navbar-static-top">
<!-- Sidebar toggle button-->
<a href="#" class="sidebar-toggle" data-toggle="offcanvas" role="button">
<span class="sr-only">Toggle navigation</span>
</a>
<div class="navbar-custom-menu">
<ul class="nav navbar-nav">
<!-- Messages: style can be found in dropdown.less-->
<li class="dropdown messages-menu">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<i class="fa fa-envelope-o"></i>
<span class="label label-success">4</span>
</a>
<ul class="dropdown-menu">
<li class="header">You have 4 messages</li>
<li>
<!-- inner menu: contains the actual data -->
<ul class="menu">
<li><!-- start message -->
<a href="#">
<div class="pull-left">
<img src="dist/img/user2-160x160.jpg" class="img-circle" alt="User Image">
</div>
<h4>
Support Team
<small><i class="fa fa-clock-o"></i> 5 mins</small>
</h4>
<p>Why not buy a new awesome theme?</p>
</a>
</li>
<!-- end message -->
<li>
<a href="#">
<div class="pull-left">
<img src="dist/img/user3-128x128.jpg" class="img-circle" alt="User Image">
</div>
<h4>
AdminLTE Design Team
<small><i class="fa fa-clock-o"></i> 2 hours</small>
</h4>
<p>Why not buy a new awesome theme?</p>
</a>
</li>
<li>
<a href="#">
<div class="pull-left">
<img src="dist/img/user4-128x128.jpg" class="img-circle" alt="User Image">
</div>
<h4>
Developers
<small><i class="fa fa-clock-o"></i> Today</small>
</h4>
<p>Why not buy a new awesome theme?</p>
</a>
</li>
<li>
<a href="#">
<div class="pull-left">
<img src="dist/img/user3-128x128.jpg" class="img-circle" alt="User Image">
</div>
<h4>
Sales Department
<small><i class="fa fa-clock-o"></i> Yesterday</small>
</h4>
<p>Why not buy a new awesome theme?</p>
</a>
</li>
<li>
<a href="#">
<div class="pull-left">
<img src="dist/img/user4-128x128.jpg" class="img-circle" alt="User Image">
</div>
<h4>
Reviewers
<small><i class="fa fa-clock-o"></i> 2 days</small>
</h4>
<p>Why not buy a new awesome theme?</p>
</a>
</li>
</ul>
</li>
<li class="footer"><a href="#">See All Messages</a></li>
</ul>
</li>
<!-- Notifications: style can be found in dropdown.less -->
<li class="dropdown notifications-menu">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<i class="fa fa-bell-o"></i>
<span class="label label-warning">10</span>
</a>
<ul class="dropdown-menu">
<li class="header">You have 10 notifications</li>
<li>
<!-- inner menu: contains the actual data -->
<ul class="menu">
<li>
<a href="#">
<i class="fa fa-users text-aqua"></i> 5 new members joined today
</a>
</li>
<li>
<a href="#">
<i class="fa fa-warning text-yellow"></i> Very long description here that may not fit into the
page and may cause design problems
</a>
</li>
<li>
<a href="#">
<i class="fa fa-users text-red"></i> 5 new members joined
</a>
</li>
<li>
<a href="#">
<i class="fa fa-shopping-cart text-green"></i> 25 sales made
</a>
</li>
<li>
<a href="#">
<i class="fa fa-user text-red"></i> You changed your username
</a>
</li>
</ul>
</li>
<li class="footer"><a href="#">View all</a></li>
</ul>
</li>
<!-- Tasks: style can be found in dropdown.less -->
<li class="dropdown tasks-menu">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<i class="fa fa-flag-o"></i>
<span class="label label-danger">9</span>
</a>
<ul class="dropdown-menu">
<li class="header">You have 9 tasks</li>
<li>
<!-- inner menu: contains the actual data -->
<ul class="menu">
<li><!-- Task item -->
<a href="#">
<h3>
Design some buttons
<small class="pull-right">20%</small>
</h3>
<div class="progress xs">
<div class="progress-bar progress-bar-aqua" style="width: 20%" role="progressbar" aria-valuenow="20" aria-valuemin="0" aria-valuemax="100">
<span class="sr-only">20% Complete</span>
</div>
</div>
</a>
</li>
<!-- end task item -->
<li><!-- Task item -->
<a href="#">
<h3>
Create a nice theme
<small class="pull-right">40%</small>
</h3>
<div class="progress xs">
<div class="progress-bar progress-bar-green" style="width: 40%" role="progressbar" aria-valuenow="20" aria-valuemin="0" aria-valuemax="100">
<span class="sr-only">40% Complete</span>
</div>
</div>
</a>
</li>
<!-- end task item -->
<li><!-- Task item -->
<a href="#">
<h3>
Some task I need to do
<small class="pull-right">60%</small>
</h3>
<div class="progress xs">
<div class="progress-bar progress-bar-red" style="width: 60%" role="progressbar" aria-valuenow="20" aria-valuemin="0" aria-valuemax="100">
<span class="sr-only">60% Complete</span>
</div>
</div>
</a>
</li>
<!-- end task item -->
<li><!-- Task item -->
<a href="#">
<h3>
Make beautiful transitions
<small class="pull-right">80%</small>
</h3>
<div class="progress xs">
<div class="progress-bar progress-bar-yellow" style="width: 80%" role="progressbar" aria-valuenow="20" aria-valuemin="0" aria-valuemax="100">
<span class="sr-only">80% Complete</span>
</div>
</div>
</a>
</li>
<!-- end task item -->
</ul>
</li>
<li class="footer">
<a href="#">View all tasks</a>
</li>
</ul>
</li>
<!-- User Account: style can be found in dropdown.less -->
<li class="dropdown user user-menu">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<img src="dist/img/user2-160x160.jpg" class="user-image" alt="User Image">
<span class="hidden-xs">Alexander Pierce</span>
</a>
<ul class="dropdown-menu">
<!-- User image -->
<li class="user-header">
<img src="dist/img/user2-160x160.jpg" class="img-circle" alt="User Image">
<p>
Alexander Pierce - Web Developer
<small>Member since Nov. 2012</small>
</p>
</li>
<!-- Menu Body -->
<li class="user-body">
<div class="row">
<div class="col-xs-4 text-center">
<a href="#">Followers</a>
</div>
<div class="col-xs-4 text-center">
<a href="#">Sales</a>
</div>
<div class="col-xs-4 text-center">
<a href="#">Friends</a>
</div>
</div>
<!-- /.row -->
</li>
<!-- Menu Footer-->
<li class="user-footer">
<div class="pull-left">
<a href="#" class="btn btn-default btn-flat">Profile</a>
</div>
<div class="pull-right">
<a href="#" class="btn btn-default btn-flat">Sign out</a>
</div>
</li>
</ul>
</li>
<!-- Control Sidebar Toggle Button -->
<li>
<a href="#" data-toggle="control-sidebar"><i class="fa fa-gears"></i></a>
</li>
</ul>
</div>
</nav>
</header>
Файл sidebar.blade.php
<aside class="main-sidebar">
<!-- sidebar: style can be found in sidebar.less -->
<section class="sidebar">
<!-- Sidebar user panel -->
<div class="user-panel">
<div class="pull-left image">
<img src="dist/img/user2-160x160.jpg" class="img-circle" alt="User Image">
</div>
<div class="pull-left info">
<p>Catherine Didenko</p>
</div>
</div>
<!-- search form -->
<form action="#" method="get" class="sidebar-form">
<div class="input-group">
<input type="text" name="q" class="form-control" placeholder="Search...">
<span class="input-group-btn">
<button type="submit" name="search" id="search-btn" class="btn btn-flat"><i class="fa fa-search"></i>
</button>
</span>
</div>
</form>
<!-- /.search form -->
<!-- sidebar menu: : style can be found in sidebar.less -->
<ul class="sidebar-menu">
<li class="header">MAIN NAVIGATION</li>
<li class="active treeview">
<a href="#">
<i class="fa fa-dashboard"></i> <span>Blog</span>
<span class="pull-right-container">
<i class="fa fa-angle-left pull-right"></i>
</span>
</a>
<ul class="treeview-menu">
<li class="active"><a href="index.html"><i class="fa fa-circle-o"></i>Posts</a></li>
<li class="active"><a href="index.html"><i class="fa fa-circle-o"></i>Categories</a></li>
<li class="active"><a href="index.html"><i class="fa fa-circle-o"></i>Tags</a></li>
<li class="active"><a href="index.html"><i class="fa fa-circle-o"></i>Users</a></li>
</ul>
</li>
</ul>
</section>
<!-- /.sidebar -->
</aside>
Файл footer.blade.php
<footer class="main-footer">
<div class="pull-right hidden-xs">
<b>Version</b> 2.3.8
</div>
<strong>Copyright © 2014-2016 <a href="http://almsaeedstudio.com">Almsaeed Studio</a>.</strong> All rights
reserved.
</footer>
В файле маршрутов, всего один роут:
Route::resource('admin/post', 'PostController');
Контроллер тоже один - PostController и заполнен у него всего один метод:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class PostController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
return view('admin.post.post');
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}
Я вот просто не понимаю где тут может быть ошибка.
Изменено kittycat_13 (25.07.2017 12:20:29)
Не в сети
Спасибо. Выглядит нормально.
Ты пишешь, что метод index обрабатывает нормально, т.е. если ты строку из create передаешь в index, то все работает?
Какую ошибку показывают логи storage/logs/laravel.log (смотри в конце)?
Изменено AlexeyMezenin (25.07.2017 12:24:15)
Не в сети
Это последние записи в логах:
#3 D:\xampp\htdocs\blog\vendor\laravel\framework\src\Illuminate\Foundation\Console\Kernel.php(122): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#4 D:\xampp\htdocs\blog\artisan(35): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#5 {main}
Не в сети
Покажу саму ошибку (ты показываешь часть stack trace). Например:
[2017-06-10 12:03:23] local.ERROR: PDOException: SQLSTATE[HY000] [1049] Unknown database 'a' in /Users/al/p/personal/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:68
Stack trace:
#0...
Изменено AlexeyMezenin (25.07.2017 12:40:20)
Не в сети
Тогда ошибок нет. Там есть единственная ошибка связанная с неправильным написанием команды make при создании контроллера.
[2017-07-25 07:01:51] local.ERROR: Symfony\Component\Console\Exception\CommandNotFoundException: There are no commands defined in the "meke" namespace.
Не в сети
Если в логах ошибки нет, может это JS? Попробуй все JS/CSS закомментить и посмотри получаешь ли ты ошибку.
Не в сети
А он вообще не видит ни JS ни СSS) Когда просматриваю код страницы есть все файлы. А вот сервер их не видит и не интерпретирует.
Не в сети
Ну это отдельная проблема, подключать JS/CSS, нужно вот так:
<link rel="stylesheet" href="{{ asset('bootstrap/css/bootstrap.min.css') }}">
А пока попробуй просто убрать все JS и CSS из шаблона, просто чтобы быть уверенными, что не в них проблема. По идее, если ошибка где-то в классах, то должна быть ошибка в логах, которой нет.
Не в сети
Я тут одну штуку заметила. Открыла код страницы для метода index и для метода сreate вместе. Так вот. Стили то на странице есть, но если index их открывает по такому маршруту http://localhost:8000/admin/bootstrap/css/bootstrap.min.css , то сreate их открывает вот так http://localhost:8000/admin/post/bootstrap/css/bootstrap.min.css. И соответственно мне выдается ошибка при открытии NotFoundHttpException. Походу у него путь к стилям неправильно генерируется. А как это исправить?
Не в сети
Я выше показал. Используй asset(). Например, asset('bootstrap/bootstrap.css') сгенерирует URL для файла public/bootstrap/bootstrap.css
Изменено AlexeyMezenin (25.07.2017 13:45:31)
Не в сети
Так перестает работать даже индексная страница. Файлы начинают подключаться по пути http://localhost:8000/bootstrap/css/bootstrap.min.css , а должны подключаться по http://localhost:8000/admin/bootstrap/css/bootstrap.min.css
Не в сети
href="admin/{{ asset('bootstrap/css/bootstrap.min.css') }}"
Не в сети
Все) Исправила) Просто admin дописала. Огромное спасибо Вам за помощь и потраченное время!:)
Не в сети
Не надо делать так:
href="admin/{{ asset('bootstrap/css/bootstrap.min.css') }}"
Если bootstrap используется исключительно в админке, тогда сделай:
href="{{ asset('admin/bootstrap/css/bootstrap.min.css') }}"
Но лучше хранить его в public/css и в public/js. А еще лучше использовать CDN.
Веб сервер больше не показывает "Unexpected EOF"?
Изменено AlexeyMezenin (25.07.2017 20:36:53)
Не в сети
Страницы 1